Я довольно новичок в nHibernate, пришедший из EF-фона, и я борюсь со следующим запросом:
_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 ???, и возвращать набор результатов. Может быть много записей о поступлении, и я бы хотел, чтобы только один PatientSearchResultModel на каждый объект пациента, при этом объект приема был самым новым к дате поступления.
Эти объекты поступают из nHibernate, и он продолжает возвращать исключение Not Supported. Существует также связь между Patient и Admissions, таким образом: Patient.Admissions, но я не мог понять, как затем добавить фильтры запросов, возвращаемые из функции Build ??? Спецификации.
Я был бы очень благодарен, если бы кто-то мог указать мне правильное направление; Я не согласен с реализацией провайдера Linq здесь, в nHibernate, и мне нужно перейти к критериям или это мой запрос Linq?
Если у кого-то есть ссылки или предложения для хороших книг или других учебных материалов в этой области, это также будет очень полезно.