在我的對象圖中,VendorServiceRateChange有一個懶加載屬性IList<VendorService>
VendorServiceList,VendorService有一個懶加載屬性IList<ClientService>
。NHibernate FetchMode笛卡爾積
當我運行下面的代碼時,我的VendorServiceList和我的ClientServiceList之間得到了一個Cartesian產品。
queueList = session
.CreateCriteria<VendorRateChange>()
.Add(Restrictions.IsNull("ProcessedDate"))
.Add(Restrictions.Le("EffectiveDate", DateTime.Now))
.SetFetchMode("VendorServiceList", FetchMode.Join)
.SetFetchMode("VendorServiceList.Vendor", FetchMode.Join)
.SetFetchMode("VendorServiceList.CityService", FetchMode.Join)
.SetFetchMode("VendorServiceList.ClientServices", FetchMode.Join)
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.AddOrder(new Order("Audit.CreatedDate", true))
.List<VendorRateChange>();
有沒有一種方法來組織使用的標準或DetachedCriteria之後,不會導致笛卡爾乘積作爲我VendorServiceList此查詢?我不希望在初始查詢返回後,對「VendorServiceList.ClientServices」上的提取進行註釋並使用Initialize調用進行循環。
在此先感謝。
不FetchMode.Select使這些屬性延遲加載?我的目標是通過一次訪問數據庫來填充所有值。 – rie819
FetchMode.Select使用另一個Select查詢來填充該數據,而不是使用連接。 –
@Cole W謝謝,我只是假設Join意味着渴望而選擇意味着懶惰。 – rie819