我将Entity Framework与通用存储库模式一起使用。我使用以下方法添加对象。

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()时?我可以回滚更改吗?

最佳答案

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


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


因此最好不要使用Parallel.ForEach

关于entity-framework-4 - 将在ObjectContext.Add中使用Parallel.ForEach受益,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7102872/

10-11 02:58