我正在使用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()
,如果有人说主键违规,它会被抛入循环内部还是{{} 1}}被称为?我可以回滚这些更改吗?
答案 0 :(得分:10)
ObjectContext不是线程安全的。这是MSDN上的评论
ObjectContext类不是线程安全的。数据的完整性 在多线程中无法确保ObjectContext中的对象 场景。
最好不要使用Parallel.ForEach
。