SqlException: 当前会话中有其他线程在运行,不允许新事务 (Entity Framework)
大家好!我是 C# 和 Entity Framework 的新手,遇到了一个奇怪的错误。我正在用 ASP.NET MVC 和 SQL Server 写一个简单的应用。服务中有一个方法需要更新数据库中的多条记录。我使用了 `foreach` 循环,并在循环内对每条记录调用 `SaveChanges()`。结果出现了异常:
**SqlException: New transaction is not allowed because there are other threads running in the session.**
以下是简化后的代码:
```csharp
public void UpdateOrders(List orders)
{
using (var context = new MyDbContext())
{
foreach (var order in orders)
{
order.Status = "Processed";
context.Entry(order).State = EntityState.Modified;
context.SaveChanges(); // 第二次迭代时出错
}
}
}
```
该方法从控制器调用:
```csharp
[HttpPost]
public ActionResult ProcessOrders(List orderIds)
{
var orders = db.Orders.Where(o => orderIds.Contains