asp.net-mvc - 如何分配数据层级过滤器

标签 asp.net-mvc database nhibernate

首先,这个问题有点奇怪。

我正在设计一个使用 ASP.NET MVC、SQL-Server 和 NHibernate 作为 ORM 的 Web 应用程序,在设计应用程序时我发现应用程序数据分为两部分(基于用户是男性还是女性)所以我有两个选项,当您选择其中一个时,所有应用程序数据将分为两部分(基于性别过滤器)

那么,有没有什么办法可以放一些“网”来根据这种过滤器从数据库中过滤数据?比如性别、位置或分支?如何使用这样的数据库级过滤器?并且不需要在我的应用程序中到处使用“... WHERE SEX=1”,只需要在数据库级别使用一个过滤器?

最佳答案

NHibernate 有一个描述为 18.1. NHibernate filters 的特性.

这是一个可以应用于集合 级别的设置。文档中的示例:

<class name="MyClass" ...>
    ...
    // this way we are saying, retrieve instances which meet the criteria
    <filter name="myFilter" condition=":myFilterParam = MY_FILTERED_COLUMN"/>
</class>

或者,对于一个集合:

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

在我们的实体/集合上设置此映射后,我们可以在 ISession 级别应用过滤器:

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

现在使用此设置过滤任何映射对象

这里有一些例子:

我发现这些用于集合的过滤器是一项非常强大的功能。集合/字典可以包含一些“用户”相关数据(例如按位置、语言、角色等过滤)

另一种方法可能只是将过滤器添加到查询 ala:.Add(ICriterion) (Criteria query).Where(expression) (QueryOver)。这可以在包装 DAL 的 AOP 过滤器中完成。

关于asp.net-mvc - 如何分配数据层级过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20933800/

相关文章:

c# - 我可以有一个名为 "View"的 ActionResult 吗

asp.net-mvc - 使用 MVC 框架 RC1 更新断开连接的 LINQ 对象

php - html编码输出&&不正确的字符串错误

javascript - 是否可以为我的 sqlite 数据库生成一个随机且唯一的 5 位数 ID?

NHibernate 动态映射

c# - Fluent NHibernate 组件映射问题

c# - ASP.net MVC 4 WebApi - 测试 MIME 多部分内容

jquery - 模式对话框内的 .NET MVC 和 jQuery-UI 表单

mysql - 是否可以在 clojure 的 lobos 迁移插件中插入记录?

nhibernate - 如何设置存储过程参数的长度