我試圖找出是否已加載懶集合,所以我知道是否將它包含在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()'的代碼嗎? –