Хорошо хранимые процедуры не являются составными. Таким образом, нет способа вызвать ваш SPROC и EF автоматически заполнить отношения в одном запросе, используя Include() или что-то еще.
Так что у вас есть продукты и категории
и у вас есть sproc, чтобы получить продукты:
т.е.
var products = context.GetProducts(someproductfilter);
полученные продукты не имеют их категории загружены.
Однако, если у вас есть вторая хранимая процедура, которая получает Категории для указанных продуктов:
т.е.
var categories = context.GetCategoriesForProducts(someproductfilter);
особенность в EF называется отношения Fixup, которая связывает связанные объекты после того, как второй объект входит в контекст, будет гарантировать, что после того, как оба вызова будут сделаны, каждый продукт в продуктах будет иметь непустую категорию.
Это не идеально, потому что вы выполняете несколько запросов, но это сработает.
Альтернативой является использование EFExtensions. Парень, который написал это, создал возможность писать sprocs, которые загружают больше данных за один раз.
Надеется, что это помогает
Приветствию Alex
Возможно, вы могли бы привести несколько примеров того, что вы делаете с EF, который «калечит медленно»? Я не нашел EF в большинстве случаев заметно медленнее, если я не делаю то, что приводит к его неэффективности. –