Gut gespeicherte Prozeduren sind nicht zusammensetzbar. Es gibt also keine Möglichkeit, den SPROC aufzurufen und die EF in der gleichen Abfrage automatisch mit Include() oder ähnlichen Elementen zu füllen.
So sagen, Sie haben Produkte und Kategorien
und Sie haben eine sproc Produkte zu erhalten:
heißt
var products = context.GetProducts(someproductfilter);
die resultierenden Produkte nicht ihre Kategorien geladen haben.
jedoch, wenn Sie eine zweite gespeicherte Prozedur, die die Kategorien für die Produkte bekommt:
dh
var categories = context.GetCategoriesForProducts(someproductfilter);
ein Merkmal in EF Beziehung Fixup genannt, die verbundenen Unternehmen verbindet, sobald die zweite Einheit tritt die Kontext, wird sichergestellt, dass, nachdem beide Anrufe getätigt wurden, jedes Produkt in Produkten eine Nicht-Null-Kategorie haben wird.
Dies ist nicht ideal, weil Sie mehr als eine Abfrage ausführen, aber es wird funktionieren. Eine Alternative ist die Verwendung EFExtensions. Der Typ, der das geschrieben hat, hat die Fähigkeit geschaffen, Sprocs zu schreiben, die mehr Daten auf einmal laden.
this helps
Prost Alex
Vielleicht könnten Sie uns ein paar Beispiele geben, was Sie mit EF machen, das "lähmend langsam" ist? Ich habe EF in den meisten Fällen nicht merklich langsamer gefunden, es sei denn, ich mache etwas, das es ineffizient macht. –