Насколько я понял, LINQ для объектов поощряет нетерпеливую загрузку Load()
или Include()
. Однако я задаюсь вопросом, где должна стремительно загружаться многослойная программа?Eager-loading & LINQ to Entities
Правильно ли для слоя доступа к данным (класс хранилища инкапсуляции экземпляра Entity), чтобы иметь общую Item GetItem(int id)
функции, а также в бизнес-логике сделать
Item item = dbRepository.GetItem(itemId);
if (!item.itemDetails.IsLoaded)
item.itemDetails.Load()
Или класс хранилища имеет различный явный функции, которые загружают различные внешние отношения, поэтому возвращают элемент отношений с нетерпением?
Большое спасибо!
Edit: Пример - http://www.asp.net/learn/mvc/tutorial-29-cs.aspx
public Contact GetContact(int id)
Эта функция возвращает тип Contact
объекта. Однако, в зависимости от потребностей бизнес-логики, мы можем хотеть Load()
или Include()
различных внешних связей объекта Contact
. Означает ли это требование, что нам нужно больше перегружать методы GetContact()
с параметрами, указывающими, какие отношения для загрузки, или просто сделать Load()
в бизнес-логике?
Спасибо за ваш ответ. Где должна быть такая логика? Если мы выполняем сопоставление на уровне модели (я предполагаю MVC), то разве мы не путаем модельный класс с моделью Presentation, так что уровень доступа к данным должен знать модель представления? –
Сопоставление типов репозиториев с типами презентационных моделей (и наоборот) должно быть в контроллере. –
Это означает, что запросы linq также будут в контроллере? (Извините, я довольно новичок в этом) –