我正在考虑重构筛选器解决方案(“筛选器”是Amazon,Newegg或Revzilla等网站支持的一种高度灵活且可自定义的筛选器)。
当前,筛选器填充为具有数百列的表,并且我们有一个旧的C#应用程序,负责将查询参数的序列化表示形式格式化和转义为动态SQL字符串,然后将其传递给过程执行并检索过滤的数据。该解决方案适用于所有精确匹配,但无需过多详细说明,就无法以一种灵活的方式来进行通配符搜索,以达到我们的目的。
但是在进行重构时,我意识到我不确定自己最好的方法是什么。我首先想到的是让C#应用程序构造一个参数化查询。然后,我可以在命令中添加任意数量的SqlParameter
对象,并使用老式的quotename()
和sp_executesql
。但是,这仍然让人觉得很棘手。数据集不是很大,因此将其存储在内存中并使用linq或其他方法似乎也是可行的,但我不知道您将如何执行“动态linq”。
我的问题是:是否存在一种现代的,已建立的且安全的模式来显示这种动态查询访问权限,还是有人完成了类似且成功的事情?可以和我分享吗?