无法使用实体框架在ASP.NET MVC应用程序中动态构建SQL查询

问题描述

我正在尝试使用Entity Framework和C#在ASP.NET MVC应用程序中动态生成SQL查询

用户选择一个字段(例如请求者),运算符(包含)并输入参数(例如john)时,我想生成一个SQL查询,如下图所示。

enter image description here

要实现此目的,我正在数据库中使用Operators表来构建查询框架。这就是我的表的样子。

Operator       sqlCommand
---------------------------------------
  11           @field = '@param'
  12           @field <> '@param'
  13           @field LIKE '@param%'
  14           @field NOT LIKE '@param%'
  15           @field LIKE '%@param%'
  16           @field NOT LIKE '%@param%' 

当我使用硬编码查询时,它工作正常,

var baseline_query = ctx.Database.sqlQuery<details>("Select requester,number,Title,Date,address from vwtest where requester LIKE '%john%'").ToList();

但是当我尝试通过使用以下代码将参数传递给where子句和Parameter来动态创建它时。

注意:此处OperatorCode的{​​{1}}是15。

Contains

它在[HttpPost] public ActionResult Search(String Field,int operator,String Parameter) { var op = operator; var field = Field; var param = Parameter; res3 = db.Operators.Where(a => a.Operator == op).Select(a => a.sqlCommand).FirstOrDefault(); using (var ctx = new DBEntities()) { var new_query1 = ctx.Database.sqlQuery<details>("Select requester,address from vwtest where "+ res3,new sqlParameter("field",field),new sqlParameter("param",param)).ToList(); } } 变量中返回count = 0。

如何动态创建上述基准查询

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)