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