gpt4 book ai didi

.net - TransactionScope 无法与并行扩展一起使用?

转载 作者:行者123 更新时间:2023-12-02 15:09:40 32 4
gpt4 key购买 nike

如果我执行以下操作:

 Using scope = New TransactionScope()
entries.Content.ReadAs(Of IList(Of WebMaint)).AsParallel.ForAll(Sub(entry)
_repos.Update(entry)
End Sub)
scope.Complete()
End Using

TransactionScope 不起作用。如果我在scope.complete上放置断点,则没有事务处于事件状态并且更新已经完成。

如果我将其更改为:

Using scope = New TransactionScope()
entries.Content.ReadAs(Of IList(Of WebMaint)).ToList().ForEach(Sub(entry)
_repos.Update(entry)
End Sub)
scope.Complete()
End Using

一切都按预期进行。有人知道为什么并行版本不能正常工作吗?

最佳答案

我不知道它是什么技术,但通常事务是线程绑定(bind)的并且不会传播到子线程。话虽如此,您必须在每个线程中启动一个新事务。但这意味着您将拥有与线程一样多的独立事务。

此限制是合理的,因为事务附加到单线程的底层 SQL 数据库连接。

关于.net - TransactionScope 无法与并行扩展一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8188009/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com