【发布时间】:2015-06-01 14:01:17
【问题描述】:
我正在尝试参数化动态查询并首先在实体框架代码中使用 SqlQuery 方法运行它。
我第一次执行 SqlQuery 时,它按预期工作,所以我确信查询或参数没有任何问题,但是我立即使用相同的参数第二次执行相同的命令,我得到了这个错误
“SqlParameter 已被另一个 SqlParameterCollection 包含。”
由于我已经在这里使用ToList() 方法,我不知道可能是什么原因!
这是模拟代码。
using (var context = Common.GetDbContext())
{
var parameters = new List<SqlParameter>();
//populating parameters here...
var sqlQuery = "Select * from MyTable where UserId=@p1 and And Active=@p2";
// first time
var result = context.Database.SqlQuery<ResultType>(sqlQuery, parameters.ToArray()).ToList();
//second time
result = context.Database.SqlQuery<ResultType>(sqlQuery, parameters.ToArray()).ToList();
}
有什么想法吗?
【问题讨论】:
-
你必须为每个查询创建一个新的 SqlParameter 实例
标签: entity-framework code-first