构建动态选择的最佳技术

本文关键字:最佳 技术 选择 动态 构建 | 更新日期: 2023-09-27 18:25:25

我在一个表单中有几个过滤器字段,这些字段将构建将填充GridView的选择语句的 where 表达式。用户还可以为每个字段选择运算符(> <>= <= like(。考虑到利弊,我想知道完成此任务的最佳技术。

我得出了一些结论:

  • Linq:不能灵活地使用多种可能性和多个运算符。
  • 存储过程:在 proc 和 where 子句中创建多个参数 make (table.description = isnull(@description, table.description)但这不允许我们使用多个运算符。
  • 在 Proc 中使用exec('Statement')。这样我们就可以动态构建查询,但查询中充满了引号,调试和修改很无聊,不确定性能。
  • 代码中的动态语句,但这样我们错过了过程性能。

专家通常如何做?最好的方法是什么?

构建动态选择的最佳技术

你的最后一句话不正确。如果使用实体框架,则可以使用本机或 EntityCommand 在字符串中动态构建查询;没有证据表明它的性能会低于使用存储过程,除非您对其进行测试。

我一直在使用以下方法:

  • 运行筛选器表达式
  • 对于每个筛选器表达式,向 WHERE 子句添加一个筛选器(您正在构建一个 SQL 字符串(
  • 对于每个筛选器表达式,如果需要,将参数信息添加到列表中(您正在构建字典<ParameterName, ParameterValue>(
  • 处理完所有筛选表达式后,从 SQL 字符串生成查询,并从字典中添加参数。