NHibernate过滤器无法正常工作

时间:2017-10-23 21:41:36

标签: c# nhibernate

我想做的是: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是一些int。

但是NHibernate从不在查询中生成过滤器。生成的查询没有&#39;其中&#39;总而言之。

我错过了一些配置或一些概念吗?

NHibernate版本4.0.0.4000。

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

1 个答案:

答案 0 :(得分:1)

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

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

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