我有一个SQL + ASP.NET情况,我怀疑它可能存在设计模式。
我有一个用户可以注册的网站,然后输入自己的数据。用户只能看到他们自己的数据,而不能看到任何其他数据。
我的问题是:有没有办法以某种方式简化这个过程。显然,所有SQL命令都需要根据用户ID进行过滤,而ASP Web Forms并不能以简单的方式实现这一点。有没有办法可以生成LINQ对象或类似的东西,可以使用User ID参数自动扩展发送到SQL Server的每个SQL命令?
答案 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
或您使用支持全局过滤器的现有自定义扩展程序之一