在动态条件下是否有任何数据过滤设计模式。 我正在为我的客户共享Web应用程序页面和相同的DataBase和相同的表。 例如,我不希望公司A的客户看到公司B的订单,因此过滤条件在公司字段上完成。 对于其他页面,可以在更多字段上完成过滤。 我正在使用存储过程或sql文本来获取数据。
我更喜欢数据过滤将由sql server完成。
答案 0 :(得分:2)
我认为将业务逻辑存储在sql server端并不是最好的选择。 SQL中的过滤数据使您的存储过程/模式设计更加复杂。
使用一些ORM(Linq,HNibernate等)框架进行动态过滤会简单得多。 当然很难在不知道项目具体情况的情况下推荐一些东西,但我会选择提供灵活数据查询的LINQ。
答案 1 :(得分:0)
将company_id
传递给应用程序中的存储过程吗?
create stored procedure GetOrders(@customer_id int)
as
select * from Orders
where company_id = @customer_id;
我忘记了存储过程的确切语法(呃!),但这个想法很合理。当然,除非你的意思完全不同。
答案 2 :(得分:0)
你想要的基本上是Isolation
。
要实现这一目标,您可以遵循以下几条规则:
CompanyName
进行参数化。在这种情况下,如果不指定公司名称,则无法调用任何数据恢复功能。 像这样的事情,如果不了解项目的实际要求,很难说出更精确的内容。
LINQ与DB有什么关系,这取决于您的规模。考虑到LINQ将比StoredProcedure或View从某个规模开始慢。但这是你必须衡量的。从舒适的角度来看LINQ自然是更优选的解决方案。