具有SQL / LINQ的多用户ASP.NET模式

时间:2016-06-25 20:52:36

标签: sql asp.net linq design-patterns

我有一个SQL + ASP.NET情况,我怀疑它可能存在设计模式。

我有一个用户可以注册的网站,然后输入自己的数据。用户只能看到他们自己的数据,而不能看到任何其他数据。

我的问题是:有没有办法以某种方式简化这个过程。显然,所有SQL命令都需要根据用户ID进行过滤,而ASP Web Forms并不能以简单的方式实现这一点。有没有办法可以生成LINQ对象或类似的东西,可以使用User ID参数自动扩展发送到SQL Server的每个SQL命令?

1 个答案:

答案 0 :(得分:0)

您的要求听起来只需要全局过滤器。支持从ORM到ORM不等,但请参见nHibernate如何实现它:

http://nhibernate.info/doc/nhibernate-reference/filters.html

过滤器是模型描述的一部分,可以在实体级别和导航属性级别应用。

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

您可以在当前会话中有选择地启用过滤器。

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

实体框架并不完全遵循相同的方法,相反,您只需重载LINQ运算符,以便将繁琐的工作封装一次:

making a global filter for entity framework

或您使用支持全局过滤器的现有自定义扩展程序之一

https://github.com/zzzprojects/EntityFramework-Plus/wiki/EF-Query-Filter-%7C-Entity-Framework-Dynamic-Instance-and-Global-Filters