Entity Framework - Vererbung mit .Include?

entity-framework

Frage

Ich denke, dass es hier einen ähnlichen Post gibt, aber nicht genau der gleiche ...

Ich habe zwei Entitäten in meinem EF-Modell - nennen wir sie Person und Entwickler, wobei letzteres von dem ersteren erbt.

Ich habe auch eine Vereinigung für Entwickler namens Qualifikationen. Dies ist in der Personenentität nicht sichtbar.

Wenn ich eine Abfrage gegen den Kontext schreibe, wie kann ich dann automatisch die Qualifikationen des Entwicklers einschließen

von Mitarbeiter im Kontext. Mitarbeiter .Einschließen ("Qualifikationen") Mitarbeiter auswählen

funktioniert nicht ... EF beschwert sich darüber, dass die Beziehung nicht existiert (ich gehe davon aus, dass sie nicht auf Employee existiert - aber es gibt keine Entität "Entity" im Kontext, nur Employee).

Beliebte Antwort

Ich bin auf dieses Problem gestoßen und habe ein wenig experimentiert. Ich fand, dass ich mit LINQ 2 Entity gearbeitet habe.

Angenommen, wir haben in Ihrem Beispiel Person <- Entwickler ---- Qualifikationen.

Wenn Sie einen Entwickler mit Qualifikationen auswählen möchten, würden Sie dies tun.

var dev = (from d in context.Persons.OfType<Developer>
                            .Include("Qualifications")
          where d.ID == id
          select d).FirstOfDefault();

Nehmen wir nun an, wir haben eine andere Verbindung zwischen Person und Adresse. Wir können Adresse auch mithilfe von LINQ 2 Entity in die Auswahl aufnehmen.

var dev = (from d in context.Persons
                            .Include("Address")
                            .OfType<Developer>()
                            .Include("Qualifications")
          where d.ID == id
          select d).FirstOfDefault();

Beachten Sie, wie ich die Dinge eingefügt habe, die ich brauchte, bevor ich den Typ konvertierte und auch nach der Konvertierung wieder einfügte. Beide Includes sollten nun problemlos zusammenarbeiten. Ich habe diese Methoden getestet und beide funktionieren. Ich hoffe, dass sie für Sie arbeiten, wenn Sie Ihre Vererbung richtig eingestellt haben.

GL.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum