NHibernate 过滤器不工作

NHibernate filter not working

我想做的是:http://www.janblaha.net/blog/nhibernate-multitenancy-in-shared-database

这是我的过滤器定义:

public class MultitenancyFilter : FilterDefinition
    {
        public MultitenancyFilter()
        {
            WithName("multitenancy").WithCondition("TenantId= :tenantId").AddParameter("tenantId", NHibernate.NHibernateUtil.Int32);
        }
    }

然后,我这样查询:

_session.EnableFilter("multitenancy").SetParameter("tenantId", tenantId);
var people = _session.QueryOver<Person>().List().ToList();

其中 tenantId 是一些整数。

但是 NHibernate 从不在查询中生成过滤器。生成的查询根本没有 'where' 子句。

我是不是漏掉了一些配置或一些概念?

NHibernate 版本 4.0.0.4000.

PS。调试时,_session 有一个名为 EnabledFilter 的 属性,我的过滤器列在那里。所以,怎么了?

根据 NHibernate documentation,您可以在定义后将过滤器附加到您的 class:

<class name="MyClass" ...>
    ...
    <filter name="myFilter" condition=":myFilterParam = MY_FILTERED_COLUMN"/>
</class>

如果您使用的是 Fluent NHibernate,您也可以使用这个 reference