我正在尝试实现a parallel.foreach
它内部有一个InsertOnSubmit
大多数时候一切正常,但我经常遇到异常:
违反 PRIMARY KEY 约束 - 无法插入重复键
我用不同的parallelOptions 尝试过它并不一致。我没有为循环的每次迭代使用相同的 DataContext,有什么建议可以InsertOnSubmit
在parallel.foreach
循环中使用吗?
while (myConcurrentDictionary.Count > 0)
{
Parallel.ForEach(myConcurrentDictionary, pOptions, (KVP, loopState) =>
{
pOptions.CancellationToken.ThrowIfCancellationRequested();
passCount++;
MsgLog.WriteLine(KVP.Key);
processKVP(KVP.Key, KVP.Value, loopState);
}); //End of Parallel.ForEach loop
}
processKVP()
{
...
DCtxt myDC = new DCtxt();
myDC.TABLE.InsertOnSubmit(new TABLE
{
...
});
insertCount++;
if ((insertCount % 100) == 0)
{
myDC.SubmitChanges();
}
}