我有一个Parallel.Foreach
循环给了我悲伤,想看看你们其中一个人是否可以对此有所了解。很遗憾,谷歌搜索它很少。
这是结:
我的foreach循环:
string [] Ids = {........}; //a string array of ID's
using(IUnitOfWork uw = GetUnitOfWork())
{
Parallel.ForEach(Ids, currentRecord =>
{
var x = (from h in uw.GetRepository<EFEntity1>().AsQueryable()
join k in uw.GetRepository<EFEntity2>().AsQueryable()
on h.ID equals k.ID
join l in uw.GetRepository<EFEntity3>().AsQueryable() on
h.FundAccount equals l.FundAccount
where h.ID == currentRecord
select new { h.x, h.y, h.z});
foreach (var v in x)
{
if (v.SomeMember == "foo")
{
}
Console.WriteLine("Output : {0} {1} {2} {3} {4} ", v.x,
v.y, v.z);
}
});
}
LINQ语句是我得到ArgumentExcpetion
抛出的地方:
已添加具有相同键的项目
在这种情况下我实现foreach循环可能出错的任何线索?
感谢支持。
由于
答案 0 :(得分:4)
我通过将使用支架移动到并行循环中解决了这个问题。原因是因为dbcontext不是线程安全的。