我正在尝试使用NHibernate过滤器来过滤父类的属性,但我不断收到multi-part identifier "Parent.Active" could not be bound
的错误。我的filter-def是:
<filter-def name="useActive" />
我的父类在映射中有这个:
<property name="Active">
<column name="ACTIVE" not-null="true" />
</property>
<bag name="Children" table="CHILDREN" inverse="true">
<key>
<column name="PARENT_ID_IN_CHILD" />
</key>
<one-to-many class="ChildType" />
</bag>
我的子类在映射中有这个:
<many-to-one name="Parent" class="ParentTyle">
<column name="PARENT_ID_IN_CHILD" />
</many-to-one>
<filter name="useActive" condition="Parent.Active = 1" />
如何在过滤时让NHibernate检查父列?
修改:我正在使用mySession.EnableFilter("useActive");
启用过滤器。我也在使用LINQ-to-NHibernate,但我认为这不重要。
答案 0 :(得分:0)
您收到的错误来自SQL Server,无法在表“Parent”上找到“Active”列。 请记住,当您定义过滤器时,您在条件中放入的字符串将简单地附加在select 的where条件中,而不是。如果要对该字段进行过滤,则必须首先确定用于SQL查询的别名nHibernate,而不是使用该别名而不是“父”。它可以像“mytable_0”之类的东西。