事务支持

LINQ to SQL 支持三个不同的事务模型。 下面列出了这些模型,按执行检查的顺序。

显式本地事务

当调用SubmitChanges时,如果Transaction属性被设置为一个(IDbTransaction)事务,则SubmitChanges将在同一事务的上下文中执行。

成功执行事务后,要由你来提交或回滚事务。 与事务对应的连接必须与用于构造事务的连接 DataContext匹配。 如果使用其他连接,则会引发异常。

显式可分发事务

可以在活动 SubmitChanges 的作用域中调用 LINQ to SQL API(包括但不限于 Transaction)。 LINQ to SQL 检测到调用在事务范围内,并且不会创建新事务。 LINQ to SQL 也避免在这种情况下关闭连接。 您可以在此类事务的上下文中执行查询和 SubmitChanges 操作。

隐式事务

调用SubmitChanges时,LINQ to SQL 会检查调用是否在某个Transaction范围内,或者Transaction属性(IDbTransaction)是否已设置为用户启动的本地事务。 如果它找不到这两个事务,LINQ to SQL 将启动本地事务(IDbTransaction),并使用它来执行生成的 SQL 命令。 成功完成所有 SQL 命令后,LINQ to SQL 将提交本地事务并返回。

另请参阅