我是相當新的具有來自一個EF背景,我用下面的查詢掙扎:Linq query nhibernate; NHibernate的不支持例外
_patientSearchResultModel = (from patient in _patientRepository.Query(patientSearch.BuildPatientSpecification())
join admission in _admissionRepository.Query(patientSearch.BuildAdmissionSpecification())
on patient.Id equals admission.Patient.Id
orderby admission.AdmissionDate
select new PatientSearchResultModel(patient.Id,
admission.Id,
false,
_phaseTypeMapper.GetPhaseTypeModel(admission.PhaseType),
patient.Last, patient.First,
admission.InPatientLocation,
admission.AdmissionDate,
admission.DischargeDate,
admission.RRI,
null,
admission.CompletionStatus,
admission.FollowupStatus)).ToList();
此查詢的目的是允許用戶在篩選的兩個查詢使用兩個Build ??? Specification函數構建的參數並返回結果集。可能有許多錄取記錄,我只希望每個患者對象有一個PatientSearchResultModel,錄取對象是錄取日期中最新的一個。
這些對象來自nHibernate,它保持返回一個不支持的異常。 Patient和Admissions之間也有一個關聯:Patient.Admissions,但我無法弄清楚如何添加查詢過濾器從函數Build ??? Specifications返回。
如果有人能指引我正確的方向,我會很感激;我是否在nHibernate中針對Linq提供程序實現並需要移至Criteria或是我的Linq查詢?
如果有人在這方面有很好的書籍或其他學習材料的任何鏈接或建議,也會很有幫助。
謝謝傑夫爲此;有一些小的調整,它工作得很好! – 2012-01-06 12:57:16
不是'AsEnumerable'是否可以撤銷映射中指定的任何連接或惰性性能增益? 'AsEnumerable'會產生選擇N + 1混亂嗎? – 2012-04-30 03:21:47
我不明白爲什麼會這樣。 AsEnumerable將強制執行查詢的查詢,但該行爲通過ToList存在於原始代碼片段中。 AsEnumerable本身並不會導致像N + 1查詢這樣的愚蠢事情。 – JeffreyABecker 2012-05-07 13:39:41