2016-06-10 14 views
6

Voglio creare semplice app Core ASP.NET. Ma quando sto cercando di generare controller API per il mio modello sto ottenendo seguente errore: (Schermate presenta codice per classe del modello e il contesto db, sotto è il codice per la classe EntityBase)Errore generatore di codice: non esiste alcun tipo di entità su DbContext

Setting up code scaffolding properties

Error

public abstract class EntityBase 
{ 
    [Key] 
    public int Id { get; set; } 
    public DateTime Modified { get; set; } 
    public DateTime Created { get; set; } 

    public EntityBase() 
    { 
     Created = DateTime.Now; 
     Modified = Created; 
    } 
} 
+0

se si sta utilizzando modificato come audit trail, ti mancherà molto rapidamente. Potresti voler usare un metodo alternativo. –

+0

Nel mio caso, l'uso dei segreti dell'utente era il mio problema. [https://github.com/aspnet/Scaffolding/issues/305](https://github.com/aspnet/Scaffolding/issues/305) – William

+0

Attualmente sto avendo lo stesso esatto problema, ma come hai risposto tu stesso domanda; né la tua risposta né nessuna delle altre ha aiutato a risolvere il mio problema. Questo perché non ho né molti a molti, la chiave non è il problema; e posso farlo su scaffold se utilizzo ApplicationDbContext, ma non la mia classe personalizzata che utilizza DbContext – Edward

risposta

0

Ok, quindi ho trovato che cosa stava causando questo errore. Ho creato relazioni Many to Many tra Convent e Group senza utilizzare la terza classe. Usavo l'api fluente per farlo.

Grazie a tutti per l'aiuto!

+0

cosa hai fatto per risolverlo? – jsturtevant

+1

Ho creato la classe per contenere molti e molti riferimenti. – arche89

+0

Ne ho uno ma continuando a ricevere l'errore deve essere qualcos'altro. Grazie – jsturtevant

0

Aggiunta [Key] proprietà risolve il problema quando non ci sono molti a molti rapporti e senza chiavi primarie nelle classi

+1

L'aggiunta di una variabile ID ai modelli ha risolto questo errore. – Ginkgo

+0

non ha fatto niente per me. Non ho né molti a molti, e l'int standard o l'ID di stringa verrà assunto come Key comunque – Edward

-1

Nel mio caso la ragione era nel chiamare dbContext.Database.Migrate() all'interno Startup.Configure(). Errore scomparso quando l'ho rimosso.

1

Avendo avuto lo stesso problema del titolo menzionato, ma senza alcun problema di chiave o relazione, ho finalmente trovato una soluzione a questo problema. In particolare con controller/viste di scaffolding di classi di modelli creati da un approccio basato su database. Nella classe DbContext si DEVI AVERE il costruttore della classe che prende il parametro DbContextOptions<MyDb>, che per qualche motivo non ottiene aggiunto con il comando 'Scaffold-DbContext' nella Console Package Manager (con un progetto ASPNETCORE)

public partial class MyDbContext : DbContext 
{ 
    public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) 
    { 
    } 
    public virtual DbSet<MyModel> MyModel { get; set; } 
} 

per gli altri così ci deve essere la stringa di connessione nel file appsettings.json, e il seguente codice nel metodo ConfigureServies dei startup.cs SCHEDA aggiungi:

se‌​rvices.AddDbContext<‌​MyDbContext>(opt‌​ions => options.UseSqlServer(Configuration.GetConnectionString("MyDbContection")));