[英]Entity Framework Core throws when using Include with parameterized input
In EF Core 2.2.6 I need to construct a dynamic query with parameterized input.在 EF Core 2.2.6 中,我需要使用参数化输入构造一个动态查询。 I start by constructing the statement:
我从构造语句开始:
var rawSql = new StringBuilder("SELECT * FROM dbo.Projects ");
var sqlParameters = new List<SqlParameter>();
rawSql.Append(string.Format("WHERE ProjectId < @param"));
sqlParameters.Add(new SqlParameter("@param", "20"));
Then I execute it:然后我执行它:
var projects = await _context.Projects.FromSql(rawSql.ToString(), sqlParameters.ToArray())
.ToListAsync();
This works.这行得通。 But if I add an
Include
it throws但是如果我添加一个
Include
它会抛出
ArgumentException: The SqlParameter is already contained by another SqlParameterCollection`
ArgumentException:SqlParameter 已包含在另一个 SqlParameterCollection 中
var projects = await _context.Projects.FromSql(rawSql.ToString(), sqlParameters.ToArray())
.Include(p => p.Managers)
.ToListAsync();
What am I doing wrong?我究竟做错了什么?
Try naming the parameter in a more concise way, perhaps the key "param" is already being used:尝试以更简洁的方式命名参数,也许键“param”已经被使用:
var rawSql = new StringBuilder("SELECT * FROM dbo.Projects ");
var sqlParameters = new List<SqlParameter>();
rawSql.Append(string.Format("WHERE ProjectId < @projectId"));
sqlParameters.Add(new SqlParameter("@projectId", "20"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.