首页新闻找找看学习计划

entity framework 6 执行带参数sql语句 另一个 SqlParameterCollection 中已包含 SqlParameter

0
悬赏园豆:10 [已解决问题] 解决于 2019-05-13 08:31

ef 6 调用 sqlquery<>方法查询,报异常 另一个 SqlParameterCollection 中已包含 SqlParameter,如何优雅的解决这个问题?
代码如下:
StringBuilder sb = new StringBuilder();
sb.Append(@"select * from UserInfoDTO ");
sb.Append("where 1=1 ");

        IList<SqlParameter> parameters = new List<SqlParameter>();

        if (!string.IsNullOrEmpty(keyword)) {
            sb.Append(" and (UserName like @KeyWord or TrueName like @KeyWord )");
            parameters.Add(new SqlParameter("@KeyWord", "%" + keyword + "%"));
        }
         if (cId.HasValue) {
            sb.Append(" and (CID=@CID)");
            parameters.Add(new SqlParameter("@CID",cId));
        }

var query =context.Database.SqlQuery<UserInfoDTO>(sb.ToString(), parameters.ToArray());
int count = query.Count();
var list=query.OrderByDescending(a=>a.CreateDate).Skip((page - 1) * limit).Take(limit).ToList();

狼性法则的主页 狼性法则 | 初学一级 | 园豆:133
提问于:2019-05-07 16:44
< >
分享
最佳答案
0

parameters.Add(new SqlParameter("@KeyWord", "%" + keyword + "%")) 改为 new SqlParameter("@KeyWord", "%" + keyword + "%")

收获园豆:10
dudu | 高人七级 |园豆:39088 | 2019-05-07 16:56

我这是多个参数啊,这样不就只能传一个了?

狼性法则 | 园豆:133 (初学一级) | 2019-05-07 16:58

@狼性法则: 可以传多个,依次写 new SqlParameter

dudu | 园豆:39088 (高人七级) | 2019-05-07 17:47

@dudu: 不太明白啊,求指教

狼性法则 | 园豆:133 (初学一级) | 2019-05-07 17:52

@狼性法则: 这个问题是 EF6 的一个 bug ,详见 Retrying queries or SQL commands fails with "The SqlParameter is already contained by another SqlParameterCollection" ,建议改用 Dapper

dudu | 园豆:39088 (高人七级) | 2019-05-07 21:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册