Ich habe verschiedene Dinge versucht, bevor Sie hierher kommen, wie verschiedene Modellansatz, Annotation, Deklarationen in DbContext, verschiedene fließende API-Verwendungen, aber ich kann nicht sehen, was das Problem ist.Entity Framework Vererbung relationalen Tabellen
Ich habe eine YogaClass-Aufzeichnung, aber wenn ich über die Subskriptionen von einer Person iteriere, habe ich ein Abonnement, aber keine YogaClass (NULL) und ja ich .Include (Person.Subscriptions) beim Abfragen der DB, bekomme ich die Subs aber nicht die damit verbundene relationale YogaClass/WorkShop.
Kurz gesagt ich habe folgende Klassen:
Abonnement (Basisklasse)
public class Subscribtion
{
[Key]
public int SubscribtionID { get; set; }
public Person Person { get; set; }
public bool IsPayed { get; set; }
}
WorkshopSubscription (inherrits Abonnement)
public class WorkshopSubscribtion : Subscribtion
{
[Key]
public int WorkshopSubscribtionID { get; set; }
public Workshop Workshop { get; set; }
}
YogaClassSubscription (inherrits Abonnement)
public class YogaClassSubscribtion : Subscribtion
{
[Key]
public int YogaClassSubscribtionID { get; set; }
public YogaClass YogaClass { get; set; }
}
YogaClass (Basisklasse)
public class YogaClass
{
[Key]
public int YogaClassID { get; set; }
public List<Subscriptions> Subscriptions { get; set; }
}
WorkShop (Basisklasse)
public class WorkShop
{
[Key]
public int WorkShopID { get; set; }
public List<Subscriptions> Subscriptions { get; set; }
}
Jetzt, nachdem ich einige Datensätze in dem Seeder füge ich folgendes Problem habe, wenn ich meine DataBase Blick in:
Tabellenabonnement: SubscriptionID: 1, WorkShop_WorkShopID: NULL, YogaClass_YogaClassID: NULL. (Warum sind sie beide NULL?)
Tabelle YogaClassSubscription: SubscriptionID: 1, YogaClassID: 1 Das Gleiche gilt für Werkstatt.
Ich verstehe nicht, warum die FK von Yoga & Workshop-Abonnement ist NULL in Subscription-Tabelle.
Ich habe ein DbSet deklariert in meinem Kontext und in modelBuilder fließend API-Methode habe ich beide YogaClassSubscribtion & WorkShopSubscribtion zu ihrer eigenen Tabelle zugeordnet.
public DbSet<Subscribtion> Subscribtions { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<WorkshopSubscribtion>().ToTable("WorkshopSubscribtions");
modelBuilder.Entity<YogaClassSubscribtion>().ToTable("YogaClassSubscribtions");
}
Warum ist es einfacher, Screenshots zu posten als vorherigen Code zu kopieren? – RandomStranger
Ich finde es überhaupt nicht lesbar, wenn Code eingefügt wird, ja, wenn ich den Code einfügende Teil vollständig arbeiten würde, würde es, aber ich tue nicht, ich ersetze 'Code hier eingeben' mit dem Code aber seinem nur rendering Teilcode, so ja ich finde das ist einfacher. Wenn Sie möchten, kann ich den Code einfügen. –
Wie Sie sehen, kann ich nicht den ganzen Code korrekt angezeigt bekommen und ich mache es genau so ... Es tut mir leid, aber IDK, wie das kommt. –