2016-06-10 11 views
6

Ich möchte einfache ASP.NET Core App erstellen. Aber wenn ich versuche, API-Controller für mein Modell zu generieren Ich erhalte folgende Fehlermeldung: (Screenshots präsentiert Code für Modellklasse und db Kontext, ist unten Code für EntityBase Klasse)Code Generator Fehler: Es gibt keinen Entitätstyp auf 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

, wenn Sie als eine modifizierte sind unter Verwendung von Audit-Trail, wird es sehr schnell scheitern. Möglicherweise möchten Sie eine alternative Methode verwenden. –

+0

In meinem Fall war die Verwendung von Benutzergeheimnissen mein Problem. [https://github.com/aspnet/Scaffolding/issues/305](https://github.com/aspnet/Scaffolding/issues/305) – William

+0

Ich habe derzeit das gleiche genaue Problem, aber wie Sie Ihre eigenen beantwortet haben Frage; weder deine Antwort noch irgendeine der anderen hat geholfen, mein Problem zu lösen. Das liegt daran, dass ich kein Many-to-Many habe, der Schlüssel ist nicht das Problem; und ich kann es zu Scaffold bekommen, wenn ich den ApplicationDbContext verwende, aber nicht meine eigene benutzerdefinierte Klasse, die DbContext verwendet – Edward

Antwort

0

Ok, also habe ich gefunden, was diesen Fehler verursacht hat. Ich habe eine Viele-zu-Viele-Beziehung zwischen Convent und Group erstellt, ohne die dritte Klasse zu verwenden. Ich benutzte dazu fließende API.

Vielen Dank für Ihre Hilfe!

+0

Was haben Sie getan, um es zu beheben? – jsturtevant

+1

Ich habe eine Klasse erstellt, die viele Referenzen enthält. – arche89

+0

Ich habe einen aber immer noch den Fehler muss etwas anderes sein. Danke – jsturtevant

0

[Key] Eigenschaft Hinzufügen behebt das Problem, wenn es dort keine Viele sind zu viele Beziehungen und keine Primärschlüssel in Klassen

+1

Das Hinzufügen einer ID-Variablen zu den Modellen hat diesen Fehler behoben. – Ginkgo

+0

hat nichts für mich getan. Ich habe auch kein number-to-many, und die standard int oder string ID wird sowieso als Key angenommen – Edward

-1

In meinem Fall ist der Grund in Aufrufen dbContext.Database.Migrate() innerhalb Startup.Configure() war. Fehler verschwand, als ich es entfernte.

1

Nachdem das gleiche Problem wie der Titel erwähnt wurde, aber ohne Schlüssel oder Beziehungsproblem, habe ich endlich eine Lösung für dieses Problem gefunden. Insbesondere mit Gerüststeuerungen/Ansichten von Modellklassen, die durch einen Datenbank-First-Ansatz erstellt wurden. In Ihrer DbContext Klasse können, MÜSSEN die Klasse Konstruktor, der die DbContextOptions<MyDb> Parameter annimmt, die aus irgendeinem Grund bekommen nicht mit dem ‚Scaffold-DbContext‘ im Package Manager-Konsole (mit einem ASPNETCORE Projekt) hinzugefügt

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

Für andere als gut muss es die Verbindungszeichenfolge in der appsettings.json Datei sein, und der folgende Code in der ConfigureServies Methode der Datei startup.cs hinzufügen:

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