0

我正在尝试使用 NHibernate 过滤器来过滤父类的属性,但我不断收到错误消息,即multi-part identifier "Parent.Active" could not be bound. 我的过滤器定义是:

<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,但我认为这并不重要。

4

1 回答 1

0

您收到的错误来自 SQL Server,它在“父”表上找不到“活动”列。请记住,当您定义过滤器时,您放入条件中的字符串将简单地附加到 select as is的 where 条件中。如果您想过滤该字段,您必须首先确定用于 SQL 查询的别名 nHibernate,而不是使用该别名而不是“父级”。它类似于“mytable_0”或类似的东西。

于 2012-09-05T07:31:05.007 回答