Ich möchte Discriminator Spalte von Data Annotation erstellen.Create Entity Framework TPH Discriminator Spalte von Data Annotation
[Table("Book")]
public partial class Book
{
public long BookID { get; set; }
[StringLength(100)]
public string name { get; set; }
public int? page { get; set; }
}
Mapping von Fluent
modelBuilder.Entity<Book>()
.Map<StoryBook>(m => m.Requires("typetitle").HasValue("story"));
Auf jeden Fall muss ich Scheider Spaltenwert in ausgewählten Ergebnis
Wie kann ich den Diskriminatoreigenschaftswert im Ergebnis sehen? d. h. 'context.Books.Find (2)' – Hamid
Wie gesagt, du kannst nicht. Es ist keine exponierte Eigenschaft. Wenn Vererbung gut verwendet wird, müssen Sie nicht wissen, mit welchem Subtyp Sie es zu tun haben. Das ist der Punkt des Polymorphismus. Wenn Sie den Typ zur Laufzeit kennen müssen, ist mein Ratschlag, keine Vererbung zu verwenden, sondern eine type -Eigenschaft zu verwenden und nach ihrem Wert zu handeln. Aber diese Diskussion geht über Ihre Frage hinaus. –
BTW, können Sie eine Sammlung von Subtypen durch 'context.Books.OfType()' erhalten. –