数据过滤的设计模式


仙风道骨刘憨憨
2025-03-13 09:15:37 (26天前)
  1. 是否有任何设计模式


数据
</跨度>

滤波
</跨度>
在动态条件下。
我正在为我的客户共享Web应用程序页面和相同的DataBase和相同的表。
例如,我不希望 公司A的客户会看到公司B的订单,所以

滤波
</跨度>
条件在公司字段上完成。
对于其他页面

滤波
</跨度>
可以在更多领域完成。
我正在使用存储过程或sql文本来获取

数据
</跨度>

我更喜欢那个

数据
</跨度>

滤波
</跨度>
将由sql server完成。

4 条回复
  1. 0# 一生浮华 | 2019-08-31 10-32



    我认为在sql服务器端存储业务逻辑不是最好的主意。 SQL中的过滤数据使您的存储过程/模式设计更加复杂。



    使用一些ORM(Linq,HNibernate等)框架进行动态过滤会简单得多。
    当然很难在不知道项目具体情况的情况下推荐一些东西,但我会选择提供灵活数据查询的LINQ。


  2. 1# NetworkAttachedStorage | 2019-08-31 10-32



    通过一个

    company_id

    来自应用程序的存储过程?




    1. create stored procedure GetOrders(@customer_id int)
      as
      select * from Orders
      where company_id = @customer_id;

    2. </code>


    我忘记了存储过程的确切语法(呃!),但这个想法很合理。当然,除非你的意思完全不同。


  3. 2# 蜡笔小辛 | 2019-08-31 10-32



    你想要的基本上是一个

    Isolation




    为此,您可以遵循以下几条规则:




    1. 在DB StoredProcedures / Views或代码中声明您的查询始终参数化

      CompanyName

      永远。在这种情况下,您无法调用

      任何

      数据恢复功能,不指定公司名称。


    2. 在您的查询中确保仅从DB检索CompanyName指定并链接到该数据的数据。


    3. 在UI上,CompanyName必须是您的UI界面的首要任务,并且用户必须首先声明。

    4. </醇>


      像这样的东西,如果不了解项目的实际要求,很难说出更精确的东西。



      什么是LINQ vs DB,它取决于您的规模。考虑到LINQ将比StoredProcedure或View从某个规模开始慢。但这是你必须衡量的。从舒适的角度来看LINQ自然是更优选的解决方案。


登录 后才能参与评论