Я пытаюсь выяснить, была ли загружена ленивая коллекция или нет, поэтому я знаю, включать ли ее в DTO. Ниже мой код.IsInitialized не работает с NHibernate LINQ
Контроллер
IEnumerable<Store> stores = StoreService.GetList(new int[] { 1, 2}, true);
StoreDTO tStore = StoreService.GetDTO(stores.First());
StoreService
public IEnumerable<Store> GetList(int[] Ids, bool stockItems = false)
{
IQueryable<Store> stores = StoreRepository.GetList(Ids);
if (stockItems)
stores.Fetch(s => s.StockItems);
return stores.ToList();
}
public StoreDTO GetDTO(Store store)
{
StoreDTO storeDTO = Mapper.Map<Store, StoreDTO>(store);
bool itemsFetched = NHibernate.NHibernateUtil.IsInitialized(store.StockItems);
if(itemsFetched) { /** do stuff **/ }
return storeDTO;
}
Проблема в itemsFetched всегда ложно, но если я ставлю точку останова на него, а затем использовать отладчик VS, чтобы посмотреть на StockItems а затем пусть точка прорыва через него возвращает true.
Означает ли это, что поставщик NHibernate LINQ поврежден или я что-то упустил?
Благодаря
Можете ли вы разместить код для 'StoreRepository.GetList()'? –