在 ObjectContext.Add 中使用 Parallel.ForEach 会带来好处
我正在将实体框架与通用存储库模式一起使用。我使用了以下方法来添加对象。
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()
吗?我可以回滚更改吗?
I am using Entity Framework with the generic repository pattern. I have used the following method to add an object.
public int Add<TEntity>(TEntity entity) where TEntity : class
{
DataContext.AddObject(GetEntityName<TEntity>(), entity);
return SaveChanges();
}
I am also thinking of extending this to support multiple entities.
public int Add<TEntity>(TEntity[] collection) where TEntity : class
{
foreach (TEntity item in collection)
{
DataContext.AddObject(GetEntityName<TEntity>(), item);
}
return SaveChanges();
}
Will there be an actual benefit in using Parallel.ForEach
instead of the foreach
loop in the above scenario?
Also because I haven't called SaveChanges()
until the end of the loop, if there is lets say a primary key violation, will it be thrown inside the loop or when SaveChanges()
is called? Will I be able to rollback the changes?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
ObjectContext 不是线程安全的。这是MSDN上的评论
所以最好不要使用Parallel.ForEach。
ObjectContext is not thread safe. Here's the remark on MSDN
So better not use
Parallel.ForEach
.