我通常在NHIBERNATE中使用分离信号符查询接口:

DetachedCriteria crit = DetachedCriteria.For<IParent>();

而且这很好。

我现在想为子对象创建一个子查询:

DetachedCriteria subcrit = DetachedCriteria.For<IChild>();

并将其添加到这样的标准中 (有点,P.Child实际上是一个别名,但我简化了):

crit.Add(LambdaSubquery.Property<IParent>(p => p.Child.ChildID).In(subcrit));

如果我的双头有价值仪是给孩子的,则可以使用:

DetachedCriteria subcrit = DetachedCriteria.For<Child>();

但不是它是用于接口(如上)。在这种情况下,我有一个例外:

NHibernate.MappingException: No persister for: Domain.Name.Space.IChild

这是本来应该是的,还是我错过了一些配置?

有帮助吗?

解决方案

在这种情况下,我认为您无法对界面进行查询,因为NHIBERNATE无法找到您打算查询的正确实施类。例如,假设您有另一个称为Childlight的Ichild的实施者(或映射到其他表格),NHIBERNATE没有任何方向来检索类。

您需要创建一个dectachedcriteria.for <child>()而不是接口。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top