如何添加一个默认情况,其中条件是针对某种类型的NHIBERNATE查询



我希望所有查询某种类型的查询所有查询,默认情况下包括一个语句。

更确切地说,我有一个特定于属性的界面特有界面 - 因此该实体属于一个租户。

当我查询某种植入该接口的类型时,Nhiberante应始终添加一个在其中的子句,过滤tenantid。

nhibernate中是否有一个机制(例如拦截器或事件听众)可以轻松地?

我会说,这种情况很容易被内置功能覆盖:

18.1。NHIBERNATE过滤器

类似的Q&

doc 的引用:

nhibrenate增加了预定过滤标准并附加的能力 这些过滤在班级和收集水平上。过滤器 标准是定义限制条款非常相似的能力 到现有的" where"属性,以及各种可用的属性 收集元素。除了这些过滤条件可以是 参数化。然后,应用程序可以在运行时做出决定 是否应启用给定过滤器以及其参数 值应该是。过滤器可以像数据库视图一样使用,但是 在应用程序内进行参数化。

为了使用过滤器,必须首先定义它们然后附加 到适当的映射元素。要定义过滤器,请使用 <filter-def/> <hibernate-mapping/>元素中的元素:

<filter-def name="myFilter">
    <filter-param name="myFilterParam" type="String"/>
</filter-def>

然后,可以将此过滤器连接到类:

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

或,到一个集合:

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

因此,一旦我们定义了一个过滤器,并将其应用于我们的集合中 - 稍后我们可以在整个会话上任何时候轻松地打开该过滤器:

session.EnableFilter("myFilter").SetParameter("myFilterParam", "some-value");

从那时起,每个集合都被选定的列上传递的"某个值"过滤

最新更新