默认情况下,LINQ to SQL 是否始终使用事务

本文关键字:事务 是否 SQL 情况下 LINQ to 默认 | 更新日期: 2023-09-27 18:37:19

我正在进行代码安全分析,但我在(在文档中)找出 LINQ 在进行所需操作时是否总是使用事务,或者我是否必须指定一些特殊的属性/参数时遇到了一些麻烦。

有谁知道这一点?

默认情况下,LINQ to SQL 是否始终使用事务

在一般情况下,LINQ 只是提供有关定义 LINQ 查询的代码的一些查询提供程序信息。 查询提供程序可以执行任何它想要的实现。 它可能使用事务,也可能不使用。 如果需要,您可以编写自己的查询提供程序,将所有查询包装在事务块中,也可以编写一个不需要的查询提供程序。 您需要查看文档(或执行一些测试)以了解您正在使用的任何特定查询提供程序(以及可能的特定查询,因为它可能因查询而异),以了解该查询提供程序如何将 LINQ 表达式转换为 SQL。

您的问题的正确答案是否定的。

话虽如此,你问错了问题。 LINQ 用于查询数据,查询不使用事务。 但是,在 LINQ 下使用的提供程序可能能够在查询时更改是忽略、跳过还是等待锁定的记录,但这不是 LINQ 的一部分。

但是,具有支持事务的数据提供程序的实体框架将默认执行事务,这可能是您要问的。

不,它不是原子事务,就像您在以 BEGIN TRANS 开头的存储过程中看到的那样。 您必须登记 System.Transactions 命名空间并将您的 using 块包装在事务中。