Le stored procedure non sono componibili. Quindi non c'è modo di chiamare il tuo SPROC e fare in modo che l'EF inserisca automaticamente le relazioni nella stessa query, usando Include() o qualcosa del genere.
Così dicono si dispone di prodotti e categorie
e hai uno sproc per ottenere prodotti:
cioè
var products = context.GetProducts(someproductfilter);
i prodotti risultanti non avranno le loro categorie caricato.
Tuttavia, se si dispone di una seconda stored procedure che ottiene i categorie per detti prodotti:
cioè
var categories = context.GetCategoriesForProducts(someproductfilter);
una caratteristica in EF chiamato rapporto di correzione, che lega entità correlate una volta che la seconda entità entra nel contesto, assicurerà che dopo aver effettuato entrambe le chiamate, ciascun prodotto nei prodotti avrà una categoria non nullo.
Questo non è l'ideale, perché stai facendo più di una query, ma funzionerà.
Un'alternativa è utilizzare EFExtensions. Il tizio che ha scritto ha creato la capacità di scrivere sproc che caricano più dati in una volta sola.
Spero che questo aiuti
Saluti Alex
fonte
2009-06-24 00:13:14
Forse potresti darci qualche esempio di ciò che stai facendo con EF che è 'paralizzante lentamente'? Non ho trovato EF notevolmente più lento nella maggior parte dei casi, a meno che non stia facendo qualcosa che lo rende inefficiente. –