[英]Entity Framework execute stored procedure in a loop
我試圖遍歷列表並在列表中的每個項目上執行存儲過程。
foreach(value in values) {
Context.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()));
}
我一直收到以下錯誤:
不允許新事務,因為會話中正在運行其他線程。
我也嘗試使用異步方法。 但這似乎不起作用。 有什么我想念的東西。 或者是否無法在循環內運行存儲過程?
也許db填充values
調用已經打開了一個事務,阻止了內部調用的運行。
嘗試在填充values
的調用中使用.ToList()
以首先預加載所有值。
為每次執行創建新的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()));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.