2

我正在使用具有通用存储库模式的实体框架。我使用以下方法添加对象。

public int Add<TEntity>(TEntity entity) where TEntity : class
{
   DataContext.AddObject(GetEntityName<TEntity>(), entity);
   return SaveChanges();
}

我也在考虑扩展它以支持多个实体。

public int Add<TEntity>(TEntity[] collection) where TEntity : class
{
   foreach (TEntity item in collection)
   {
     DataContext.AddObject(GetEntityName<TEntity>(), item);
   }

   return SaveChanges();
}

在上述场景中使用Parallel.ForEach而不是循环会有实际好处吗?foreach

也因为我SaveChanges()直到循环结束才调用,如果有一个主键违规,它会被扔到循环内还是什么时候SaveChanges()被调用?我可以回滚更改吗?

4

1 回答 1

11

ObjectContext不是线程安全的。这是 MSDN 上的评论

ObjectContext 类不是线程安全的。在多线程场景下,无法保证 ObjectContext 中数据对象的完整性。

所以最好不要使用Parallel.ForEach

于 2011-08-18T06:32:44.950 回答