Ich denke, dass es hier einen ähnlichen Beitrag darüber gibt, aber nicht genau derselbe ...
Ich habe zwei Entitäten in meinem EF-Modell - nennen wir sie Person und Entwickler, wobei letzterer von dem ersteren erbt.
Ich habe auch eine Verbindung zum Entwickler namens Qualifikationen. Dies ist in der Entität Person nicht sichtbar.
Wenn ich eine Abfrage für den Kontext schreibe, wie schließe ich automatisch (.) die Qualifikationen des Entwicklers ein, z. B.
vom Mitarbeiter im Kontext.Mitarbeiter .Include ("Qualifikationen") Wählen Sie Mitarbeiter
funktioniert nicht ... EF beklagt sich, dass die Beziehung nicht existiert (ich nehme an, weil sie nicht auf Employee existiert - aber es gibt keine Developer-Entität im Kontext, nur Employee).
Ich bin auf dieses Problem gestoßen und habe ein wenig experimentiert. Hier ist, was ich gefunden habe mit LINQ 2 Entity gearbeitet.
Nehmen wir an, wir haben in Ihrem Beispiel Person & lt; - Entwickler ---- Qualifikationen.
Wenn Sie einen Entwickler mit Qualifikationen auswählen möchten, würden Sie dies tun.
%Vor%Nehmen wir nun an, wir haben eine andere Verknüpfung zwischen Person und Adresse. Wir können auch die Adresse in die select aufnehmen, die auch LINQ 2 Entity verwendet.
%Vor%Beachten Sie, wie ich die benötigten Dinge eingefügt habe, bevor ich den Typ konvertiert und nach der Konvertierung wieder eingefügt habe. Beide Includes sollten jetzt problemlos zusammenarbeiten. Ich habe diese Methoden getestet und beide funktionieren. Ich hoffe, sie arbeiten für Sie, vorausgesetzt, Sie haben Ihre Vererbung korrekt eingerichtet.
GL.
Wie wäre es damit:
%Vor%Um die Dinge sind hier interessant:
wenn Sie das später tun:
%Vor%Sie werden nur Entwickler bekommen, und sie werden ihre Qualifikationen auch geladen haben.
Siehe Tipp 1 für weitere Informationen darüber, warum das funktioniert
Hoffe, das hilft
Alex
Basierend auf der Antwort von Tri Q, aber für diejenigen, die den Ansatz ".Load ()" bevorzugen, können Sie verwenden:
%Vor%Ich benutze es in meinem DbContext. Ich habe die LoadDb () -Methode erstellt, die alle benötigten Daten lädt. So kann ich es aus vielen Projekten verwenden.
Ich bin mit EF nicht vertraut, aber das sieht für mich wie ein Standard-Vererbungsproblem aus. Wenn Sie auf die eindeutigen Eigenschaften einer untergeordneten Klasse aus einer Sammlung von übergeordneten Objekten zugreifen möchten (wobei die tatsächlichen Objekte Instanzen der untergeordneten Klasse sein können oder nicht), müssen Sie den Objekttyp überprüfen und an das untergeordnete Objekt übergeben Gegebenenfalls können Sie dann auf die einzigartigen Eigenschaften zugreifen.
Was würden Sie erwarten, dass die angegebene Anweisung zurückkommt, wenn einige oder alle Objekte keine Person waren?
Tags und Links entity-framework