gpt4 book ai didi

c# - 使用 TransactionScope RequiresNew 的缺点

转载 作者:可可西里 更新时间:2023-11-01 08:04:54 25 4
gpt4 key购买 nike

我想了解在 EntityFramework(w/Sql Server 2008)上使用 TransactionScopeOption.RequiresNew 的权衡/缺点是什么,我们不应该总是使用 RequiresNew 的原因是什么。

问候。

最佳答案

您应该使用 Required 而不是 RequiresNew。 RequiresNew 意味着每个操作都将使用一个新的事务,即使已经存在一个包含的事务范围。这肯定会导致僵局。即使使用 RequiredTransactionScope 也存在另一个严重问题,即它默认创建一个 Serializable 事务,这是一个非常糟糕的选择,但死锁 hell 和没有可扩展性的另一个捷径。参见 using new TransactionScope() Considered Harmful .您应该始终使用显式 TransactionOption 将隔离级别设置为 ReadCommitted 创建事务范围,这是一个更加明智的隔离级别:

using(TransactionScope scope = new TransactionScope(
TransactionScopeOption.Required,
new TransactionOptions {
IsolationLevel = IsolationLevel.ReadCommitted}))
{
/// do work here
...
scope.Complete();
}

关于c# - 使用 TransactionScope RequiresNew 的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5760570/

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