LINQ to SQL默认情况下是否始终使用Transactions?

时间:2015-01-13 16:54:35

标签: c# sql asp.net linq transactions

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

有谁知道这个?

3 个答案:

答案 0 :(得分:4)

LINQ,在一般情况下,仅仅提供有关定义LINQ查询的代码的一些查询提供程序信息。查询提供程序可以执行它想要的任何操作。它可能使用交易,也可能不使用。您可以编写自己的查询提供程序,如果您愿意,可以在事务块中包装每个查询,或者您可以编写一个不包含事务块的查询。您需要查看文档(或进行一些测试)以查找您正在使用的任何特定查询提供程序(以及可能的特定查询,因为它可能在查询之间有所不同),以查看该查询提供程序如何将LINQ表达式转换为SQL

答案 1 :(得分:1)

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

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

然而,

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

答案 2 :(得分:0)

不,这不是您在以BEGIN TRANS开头的STORED PROCEDURE中看到的原子事务。您必须登记System.Transactions命名空间并在事务中包装您的using块。