を助けるように
AssignedProviderID = ProviderID
OR
AncillaryProviderID = ProviderID
というオブジェクト私はそのIDを、引数としてプロバイダ自体を使用していないではないことを
session
.CreateCriteria<PatientCase>()
.Add(new Disjunction()
.Add(Restrictions.Eq("AssignedProvider", provider))
.Add(Restrictions.Eq("AncillaryProvider", provider)));
を:古典的な基準の長い道のりには、次のようです。 idの代わりにエンティティを扱うのが一般的に「オブジェクト指向」です。 IDSを使用するには、テーブルを結合することがあります。
session
.CreateCriteria<PatientCase>()
.CreateCriteria("AssignedProvider", "assigned")
.CreateCriteria("AncillaryProvider", "ancillary")
.Add(new Disjunction()
.Add(Restrictions.Eq("assigned.Id", providerId))
.Add(Restrictions.Eq("ancillary", providerId)));
が、少なくともNH 3.0(。例えばQueryOver)で、周りに簡単に、より読みやすい構文があります。
また、HQLでこれを行うには簡単です:
session
.CreateQuery(
@"select case from PatientCase case
where case.AssignedProvider = :provider
or case.AncillaryProvider = :provider")
.SetEntity("provider", provider);
を解決した方法ですか? –
なぜこれの基準が必要ですか?動的である必要がありますか?静的クエリはHQLでははるかに簡単です。 –