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();
将 parameters.Add(new SqlParameter("@KeyWord", "%" + keyword + "%"))
改为 new SqlParameter("@KeyWord", "%" + keyword + "%")
我这是多个参数啊,这样不就只能传一个了?
@狼性法则: 可以传多个,依次写 new SqlParameter
@dudu: 不太明白啊,求指教
@狼性法则: 这个问题是 EF6 的一个 bug ,详见 Retrying queries or SQL commands fails with "The SqlParameter is already contained by another SqlParameterCollection" ,建议改用 Dapper