我想做的是: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的属性,我的过滤器列在那里。那么,怎么了?
答案 0 :(得分:1)
根据NHibernate documentation,您可以在定义后将过滤器附加到您的类:
<class name="MyClass" ...>
...
<filter name="myFilter" condition=":myFilterParam = MY_FILTERED_COLUMN"/>
</class>
如果您使用的是Fluent NHibernate,您也可以使用此reference。