遅延コレクションがロードされているかどうかを調べようとしているので、DTOにインクルードするかどうかを知っています。以下は私のコードです。 itemsFetchedさ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;
}
問題は常にfalseですが、私はそれにブレークポイントを入れている場合、その後StockItemsを見てVSデバッガを使用しますブレークポイントをtrueに戻します。
これは、NHibernate LINQプロバイダが壊れているか、ここで何か不足していることを意味しますか?
おかげ
'StoreRepository.GetList()'のコードを投稿できますか? –