Mit Hilfe einer gespeicherten Prozedur in Entity Framework, wie bekomme ich das Unternehmen seine Navigationseigenschaften bevölkert haben?

StackOverflow https://stackoverflow.com/questions/1035677

Frage

Entity Framework ist cripplingly langsam, so habe ich versucht, eine gespeicherte Prozedur, aber ich lief in dieses Problem.

Entity Framework ermöglicht es Ihnen, eine gespeicherte Prozedur zu definieren, die ein Unternehmen produziert. Allerdings meine Einheit hat ‚Navigationseigenschaften‘, die nicht eingefüllt werden, wenn mit dieser Methode.

Gibt es eine Arbeit um?

War es hilfreich?

Lösung

Nun gespeicherte Prozeduren sind nicht zusammensetzbare. So gibt es keine Möglichkeit, Ihre SPROC zu rufen und haben die EF automatisch Beziehungen in derselben Abfrage füllen, Fügen () oder etwas.

So sagen, Sie haben Produkte und Kategorien

und Sie haben eine sproc Produkte zu bekommen:

d.

var products = context.GetProducts(someproductfilter);

die resultierenden Produkte nicht ihre Kategorien geladen haben.

Wenn Sie jedoch eine zweite gespeicherte Prozedur, die die Kategorien für die Produkte erhält:

d.

var categories = context.GetCategoriesForProducts(someproductfilter);

ein Merkmal in EF Beziehung Fixup genannt, die verbundenen Unternehmen verbindet, sobald die zweite Einheit den Kontext eintritt, wird diese versichern, nachdem beiden Anrufe getätigt werden, hat jedes Produkt in Produkten mit einer Nicht-Null-Kategorie.

Das ist nicht ideal, weil Sie mehr als eine Abfrage tun, aber es wird funktionieren.

Eine Alternative ist die Verwendung EFExtensions . Der Mann, der schrieb, dass die Fähigkeit geschaffen sprocs zu schreiben, die mehr Daten in einem Rutsch zu laden.

Hope, das hilft

Prost Alex

Andere Tipps

Ich fand diese Frage SO, wenn Stored Procedures (SPs) mit EF zu erforschen. Ich sehe auch Leute wie @KristianNissen und @Todilo gefragt, ob es ein Update mit EF6.

Die Antwort ist ja, EF 6 hat die Dinge geändert, aber es hat nichts hinzufügen Last Navigationseigenschaften zu helfen, wenn SPs verwenden. Ebenso wenig können Sie verwenden, um die .INCLUDE () -Methode mit SPs wie in diesem SO Frage .

Der einzige Weg ist Ihr SP zu schreiben, um speziell die Navigations-Eigenschaften zu laden. Allerdings gibt es jetzt einige gute Dokumentation von Microsoft auf SPs - siehe Abfrage SP und SP mehr Ergebnismengen zurück.

Für Vollständigkeit der Änderung, dass EF-Version 6 gebracht in Stored Procedures (SPs), damit war einfügen, aktualisieren zu handhaben und löschen - siehe Microsoft Artikel und Entity Framework tutotial .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top