我想重构一个逻辑来过滤我的应用程序的网格。我想仅在数据库中实现此逻辑。
所以,我有一个网格,显示来自DB的更多表格中的数据。有一些textBoxes
和comboBoxes
,用于设置所需的每个过滤器的数据。
现在,数据库中的巨大的存储过程以这种方式运行:
最初从表中选择 [ALL DATA] 到临时表中, 之后, 根据填充数据的字段(来自应用程序过滤器),它从 [ALL DATA] 中删除 NOT LIKE SELECTED FILTER
的信息依赖于在过滤器中设置的foreach参数。
这种方式消耗了很多时间,因为最初会选择所有数据,然后慢慢删除那些不需要的数据。
我不想在客户端创建SQL查询。我想只对数据库这样做,或者......我不知道......
这将是一种最佳方式,非常优化,可以快速运行并尽可能在短时间内返回结果?
我在客户端使用C#和.NET 4.0,以及MSSQL DB。
感谢您的建议。
答案 0 :(得分:1)
这就是ORM的用途。不要在客户端构建动态SQL语句。而是通过过滤器构建LINQ查询过滤器。您将获得完全动态的好处,而不会有SQL注入的风险。
您可以查看this作为示例。
答案 1 :(得分:1)
修改您的存储过程,使其仅首先在temprorary表中选择所需的数据,而不是选择所有内容,然后删除不需要的内容。