我将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/