TransactionScope 锁定表和 IsolationLevel

2024-01-05

我想用TransactionScope在我的项目中。我读到它,发现它在数据库中创建了一个隐式事务。我想知道是否是这样TransactionScope锁定它操作的表?

例如在这段代码中:

using (Entities ent = new Entities())
{
    using (TransactionScope tran = Common.GetTransactionScope())
    {
        var oldRecords = ent.tblUser.Where(o => o.UserID == UserID);

        foreach (var item in oldRecords)
        {
           ent.tblUser.DeleteObject(item);
        }

and

public static TransactionScope GetTransactionScope()
{
    TransactionOptions transactionOptions = new TransactionOptions();
    transactionOptions.IsolationLevel = System.Transactions.IsolationLevel.Serializable;
    return new TransactionScope(TransactionScopeOption.Required, transactionOptions);
}

Is tblUser锁定直到Complete命令问题?

Does IsolationLevel在显式事务中类似于隐式事务?

Thanks


It's SQL服务器如果需要的话,它会进行锁定。Any UPDATE or DELETE操作必须得到一个独占锁在它影响的那些行上 - 如果这些行已经被另一个事务锁定,则它不能这样做。

因此,在您的情况下,如果您从数据库中删除了多行,SQL Server 默认情况下将锁定仅那些行- 那些正在被删除的。它不会锁定整个表。这是unless您一次删除大量行 - 如果删除更多行5'000单个事务中的行,SQL Server 将尝试执行锁升级并锁定整个表(而不是保留和管理 5000 多个单独的行锁)。

隔离级别仅定义多长时间reading将锁定一行 - 默认情况下(READ COMMITTED),该行将有一个shared仅在读取时锁定 - 通常是非常非常短的时间。具有隔离级别可重复读取,共享锁将一直保持到当前事务结束,并且可串行化不仅会锁定正在读取的行,还会锁定整个行范围。但再说一遍:那个only影响READ运营——对运营没有直接影响DELETE or UPDATE语句(除了在行上拥有共享锁可能会阻止DELETE从获取它需要的独占锁)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TransactionScope 锁定表和 IsolationLevel 的相关文章

随机推荐

  • 如何以编程方式实现摇动动画?

    如何以编程方式在 android 中实现摇动 摆动动画 有一个AndroidView动画 https github com daimajia AndroidViewAnimations通过这个库我们就可以得到效果了 但我不想为此目的使用任何
  • 导出为 PDF 时表格行没有分页符

    将表格导出为 PDF 时 表格行不会分页 我尝试使用以下方法在每个表行上进行分页 tr 表格行中断如下 导出为 PDF 在浏览器内查看 我希望表行 Vrsta blaga storitve 保持紧凑 因此 单元格不会显示在不可打印区域中 如
  • 如何更改复选框选择时行的背景颜色

    我有 html 表 还有一些带有复选框的行 在选择复选框时 我想用一些背景颜色突出显示该行 table tr td td tr table
  • java.io.FileNotFoundException:/storage/emulated/0/Notes/fact50Result.txt:打开失败的ENOENT(没有这样的文件或目录)

    我正在尝试将阶乘计算的结果导出到 txt 文件中 我发现这段代码从这篇文章中看起来非常简单here https stackoverflow com questions 8152125 how to create text file and
  • 用层次结构和类替换数组可以吗?

    在我的实现中 我应该使用一个长数组 但数组的问题是它的索引对我来说没有多大意义 相反 我想使用层次结构类 然而 有时我需要以批量方式处理它们 例如在计算差异和导数或平均值时 所有成员都是double并且看起来对齐不会产生任何问题 下面是一个
  • MomentJS 设置时区而不更改时间

    我正在尝试在 moment js 中设置日期的时区而不更改时间值 我得到一个 UTC 日期 date toString Sun Sep 27 2015 00 00 00 GMT 0000 我需要设置时区而不更改时间 Sun Sep 27 2
  • WeakHashMap 的 keySet 条目永远不会为空吗?

    如果我迭代 WeakHashMap 的键集 是否需要检查 null 值 WeakHashMap
  • Objective-C++ 的缺点? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 照片上传 CodeIgniter

    当我使用 CodeIgniter 上传照片时 图像的名称会更改为随机名称 例如 107fb08f4a11cc37a040237cdcf0e48a jpg 我在视图中显示数据库中的图像时遇到问题 因为它显示的是原始上传名称而不是新名称 如何禁
  • Vaadin - 根据内容为表格单元格着色

    我在这里有一个非常基本的示例 我尝试根据该单元格中存在的特定字符串值为特定单元格着色 我输入打印语句 然后点击返回 绿色 返回 橙色 等点 但在运行时我只得到灰色和白色交替的行颜色 而不是我的特定单元格颜色 我使用的 css 是直接从 va
  • Octave 中的折叠功能

    Octave 中的一维向量是否有折叠 减少 聚合等 的标准实现 如果没有 有没有办法在不使用循环语句的情况下表达折叠 The miscellaneous http octave sourceforge net miscellaneous i
  • 使用 MQTT Android 服务从飞行模式重新连接

    我正在实现此处找到的 Dale Lane MQTT Android 服务示例http dalelane co uk blog p 1599 http dalelane co uk blog p 1599 这个例子对于我的特定目的来说工作得很
  • 访问 YouTube 用户上传 Feed 中超过 start_index=1000 的项目

    我目前正在尝试从 YouTube 用户上传源中提取有关视频的数据 此 Feed 包含特定用户上传的所有视频 可通过以下请求从 API 访问 http gdata youtube com feeds api users USERNAME up
  • WPF 圆角文本框

    我不了解WPF 现在正在学习它 我一直在寻找圆角TextBox在 WPF 中 于是我用Google搜索了一下 找到了一段XAML
  • Tomcat Catalina 上下文 - 将现有 servlet 添加到上下文

    我想将现有的 servlet 添加到上下文中 并且当我使用 Main java 时它可以工作 Tomcat addServlet ctx MyServlet new MyServlet ctx addServletMappingDecode
  • pandas 和seaborn 的堆叠密度图

    我正在尝试从 pandas 数据框中获取以下图 我不知道如何将seaborn 与pandas 结合起来完成这项任务 这是我想使用的数据框 import pandas as pd data pd DataFrame a np random r
  • CV2 Python VideoCapture(0) 意外参数

    我有一个简短的 python 脚本 它将打开网络摄像头并在本地网站上显示实时信息 我正在使用 PyCharm IDE 它提供更正并在出现语法错误时通知您 当我将参数传递给 VideoCapture 时 它 会突出显示该参数并显示 意外的参数
  • 如何在 C# 中将 CRC32 计算为有符号整数?

    我是一名 PHP 开发人员 对 C 有点不熟悉 在PHP中 有一个crc32 函数 http www php net manual en function crc32 php它为您传入的任何字符串返回一个有符号整数 所以这就是我习惯的
  • 在 JavaScript 中的正则表达式中使用变量

    使用正则表达式匹配此模式 5h 到 6h 4am 到 9am 3pm 到 8pm 4h 到 9pm 我已经有了正则表达式 5h 4pm 5am 我想使用这个正则表达式来匹配凌晨 4 点到上午 9 点 like var reg expr d
  • TransactionScope 锁定表和 IsolationLevel

    我想用TransactionScope在我的项目中 我读到它 发现它在数据库中创建了一个隐式事务 我想知道是否是这样TransactionScope锁定它操作的表 例如在这段代码中 using Entities ent new Entiti