わかりましたので、これの良い例を見つけることができないので、切り離された基準の使用方法をよりよく理解することができます (最初にそれを使用したいと仮定します)。
私は2つのテーブルを持っています。Placement と PlacementSupervisor
私の PlacementSupervisor テーブルには Placement.PlacementID に関連する PlacementID の FK がありますが、私の nhibernate モデル クラスには PlacementSupervisor があります。プレースメント (プレースメント ID のプロパティを具体的に指定するのではなく、これが重要かどうかは不明です)。
私がやろうとしているのは、スーパーバイザー ID の値が渡される場合、そのスーパーバイザー ID で配置を制限したいということです。
試しました:
ICriteria query = m_PlacementRepository.QueryAlias("p")
....
if (criteria.SupervisorId > 0 && !string.IsNullOrEmpty(criteria.SupervisorTypeId))
{
DetachedCriteria entityQuery = DetachedCriteria.For<PlacementSupervisor>("sup")
.Add(Restrictions.And(
Restrictions.Eq("sup.supervisorId", criteria.SupervisorId),
Restrictions.Eq("sup.supervisorTypeId", criteria.SupervisorTypeId)
))
.SetProjection(Projections.ProjectionList()
.AddPropertyAlias("Placement.PlacementId", "PlacementId")
);
query.Add(Subqueries.PropertyIn("p.PlacementId", entityQuery));
}
エラーが表示されるだけです: 一致する基準情報プロバイダーが見つかりませんでした: (sup.supervisorId = 5 and sup.supervisorTypeId = U)
まず、supervisorTypeId は文字列です。第二に、私がやろうとしていることを達成する方法がわからないので、プロジェクション、プロパティエイリアス、サブクエリオプションのさまざまな組み合わせを試してみました..別のテーブルに参加する方法がわからないため/entity FK キーが 2 番目のテーブルにある場合。
誰かが私を正しい方向に向けることができますか?データの観点からはとても簡単なことのように思えますが、明らかな何かが欠けていることを願っています!!