私は通常、NHibernate で DetachedCriteria を使用してインターフェイスをクエリします。
DetachedCriteria crit = DetachedCriteria.For<IParent>();
そして、これはうまくいきます。
子オブジェクトのサブクエリを作成したいので、次のようにします。
DetachedCriteria subcrit = DetachedCriteria.For<IChild>();
次のように基準に追加します(p.Childは実際にはエイリアスですが、単純化しました):
crit.Add(LambdaSubquery.Property<IParent>(p => p.Child.ChildID).In(subcrit));
これは、私の DetchedCriteria が子用の場合に機能します。
DetachedCriteria subcrit = DetachedCriteria.For<Child>();
しかし、それはインターフェース用ではありません(上記のように)。その場合、例外が発生します。
NHibernate.MappingException: No persister for: Domain.Name.Space.IChild
これは意図されたものですか、それとも設定がありませんか?