は、EFの背景から来て、私は次のクエリで苦労しています:Linqクエリ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();
このクエリの意図は、ユーザーが上の2つのクエリをフィルタリングできるようにすることです2つのBuild ??? Specification関数を使用して構築されたパラメータを返し、結果セットを返す。入院記録が多数ある可能性があり、患者オブジェクトごとに1つのPatientSearchResultModelが好きであり、入場日は入場日によって最新のものになります。
これらのオブジェクトはnHibernateからのもので、サポートされていない例外が返されます。 PatientとAdmissionsの間には関連があります:Patient.Admissionsでも、ビルドの仕様から返されるクエリフィルタの追加方法を理解できませんでした。
誰かが私を正しい方向に向けることができたら本当に感謝しています。私はここでnHibernateのLinqプロバイダの実装と反対し、Criteriaに移動する必要がありますか、それは私のLinqクエリですか?
誰かがこのエリアの良い本や他の学習資料のリンクや提案を持っている人は、本当に役に立ちます。
ありがとうございました。それは素晴らしい仕事の小さな調整のカップルで! –
'AsEnumerable'は、マッピングで指定された結合や遅延パフォーマンスの向上を元に戻しませんか? AsEnumerableは選択されたN + 1混乱の権利を作成する予定ですか? –
私はそれがなぜか分かりません。 AsEnumerableはクエリの評価と実行を強制しますが、その動作はToListを介して元のスニペットにあります。 AsEnumerableはN + 1クエリのような愚かなことを引き起こしません。 – JeffreyABecker