我有一个循环将记录插入数据库(火鸟):
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
{
taskList.Add(Task.Factory.StartNew(() =>
{
Parallel.ForEach(objectList, c =>
{
DoInsert(c, id);
});
}));
scope.Complete()
}
如果插入失败,我希望能够将这些插入作为批处理回滚。但是,当我在 Parallel.Foreach 循环中执行插入时,事务范围是不可见的。我假设这是因为循环在不同的线程中运行。如果我使用 TransactionScope 作为串行插入来执行此操作,则一切正常。
我尝试使用 DependentTransaction,但似乎无法获取 DoInsert 函数的上下文。DoInsert 只是打开一个连接并将 C 的内容写入数据库。
有任何想法吗?
谢谢,