Code zuerst den Primärschlüssel zwischen den Tabellen teilen

Ich benutze Entity Framework-Code zuerst zu versuchen, eine database zu erstellen, wobei ich mehrere Tabellen, die einzigartige primäre Schlüssel zu teilen.

Ich habe die folgende Struktur zu meinen Domain-classn und würde hoffen, dass FirstClass, SecondClass, ThirdClass alle als Tabellen erstellt werden, die mit einer BaseTable verknüpfen, in der die freigegebenen Schlüssel gespeichert sind. Ich habe die SharedClass-class in diesem Beispiel aufgenommen, da ich auch dieses Strutcure in meinem Projekt habe.

[Table("BaseTable")] public abstract class BaseClass { public int Id { get; set; } } public abstract class SharedClass : BaseClass { public string SharePropertyOne { get; set; } public string SharePropertyOne { get; set; } } [Table("FirstClass")] public abstract class FirstClass : SharedClass { public string SharePropertyOne { get; set; } public string SharePropertyOne { get; set; } } [Table("SecondClass")] public abstract class SecondClass : SharedClass { public string SharePropertyOne { get; set; } public string SharePropertyOne { get; set; } } [Table("ThirdClass")] public abstract class ThirdClass : SharedClass { public string SharePropertyOne { get; set; } public string SharePropertyOne { get; set; } } 

Was derzeit geschieht, ist, dass FirstClass, SecondClass und ThirdClass alle erstellt werden, aber mit ihren eigenen Primärschlüsseln und keine BaseTable erstellt wird.

Ich bin mir nicht sicher, ob ich etwas fehlt, nachdem ich hier einige Fragen gesehen habe, die etwas Ähnliches verlangen.

Die EF-inheritance wird nicht standardmäßig aktiviert und sogar durch Anwendung der Table -Annotation auf einer Basisklasse.

Es kann entweder durch Hinzufügen eines DbSet zum abgeleiteten DbContext aktiviert werden:

 public DbSet<BaseClass> BaseClass { get; set; } 

die Ihnen auch erlaubt, polymorphe Abfragen zu verwenden, oder mit fließendem Aufbau – das nötige Minimum ist:

 modelBuilder.Entity<BaseClass>();