我正在尝试遍历列表并对列表中的每个项执行存储过程。
Home
我一直收到以下错误:
不允许使用新事务,因为会话中还有其他线程在运行。
我也尝试使用异步方法。但这似乎不起作用。有什么我想念的东西。或者是否无法在循环内运行存储过程?
答案 0 :(得分:2)
对填充values
的db调用可能已经打开了一个事务,阻止了内部调用的运行。
尝试在填充.ToList()
的调用中使用values
来预先加载所有值。
答案 1 :(得分:0)
为每次执行创建新的Context
实例可能会更好;
foreach (value in values)
{
using (var yourContext = new YourDbContext())
{
yourContext.Database
.ExecuteSqlCommand(
"sp_ProcedureName @value1, @value2, @value3",
new SqlParameter("@value1", value.value1.ToString()),
new SqlParameter("@value2", value.value2.ToString()),
new SqlParameter("@value3", value.value3.ToString()));
}
}