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