次のようなクラス構造を持っている
Permit->Financial->ICollection
InstrumentList Instrument-> Agency
つまり、PermitのインスタンスにはFinancial
のインスタンスが含まれますFinancialのインスタンスにはInstrumentオブジェクト
のコレクションがありますInstrumentのインスタンスにはAgencyがあります
NHibernate Critieriaを使用して、特定のタイプのエージェンシーの機器を使用した許可証のリストを取得したい
このコードは、財務情報を含むすべての許可証を取得します(許可証に財務情報がない場合は、私はしません。必要ありません)
// get all all Permits with Financial info
var financialCriteria = DetachedCriteria.For<Financial>()
.SetProjection(Projections.Property("Permit.Id")); // Permit.Id in Select
queryCriteria.Add(Subqueries.PropertyIn("Id", financialCriteria)); // Permit.Id in Select
次に、そのリストをタイプ2および3のエージェンシーに制限します。
// then restrict to certain Agency types
var instrumentCriteria = DetachedCriteria.For<Instrument>()
.SetProjection(Projections.Property("Id")) // Instrument.Id in Select
.Add(Restrictions.In("Agency", new object[] { 2, 3})); // Where
queryCriteria.Add(Subqueries.PropertyIn("Id", instrumentCriteria)); //
ただし、コードの2番目のチャンクで実行すると、2と3があることがわかっているときに、空のリストが返されます。
私が間違っていることは何ですか?