微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决无法使用实体框架在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 举报,一经查实,本站将立刻删除。