В моем графе объектов VendorServiceRateChange имеет ленивое загруженное свойство IList<VendorService>
VendorServiceList, а VendorService имеет ленивое загруженное свойство IList<ClientService>
.
Когда я запускаю следующий код, я получаю декартово произведение между моим VendorServiceListи мой ClientServiceList.
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>();
Есть ли способ структурировать этот запрос с использованием Criteria или DetachedCriteria, который не привел бы к декартовому продукту в качестве моего VendorServiceList?Я не хочу прибегать к тому, чтобы закомментировать выборку «VendorServiceList.ClientServices» и выполнить цикл с помощью вызова Initialize после возвращения исходного запроса.
Заранее спасибо.