事务支持

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

显式本地事务

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

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

显式可分发事务

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

隐式事务

当你调用 SubmitChanges 时,LINQ to SQL 会检查此调用是否在 Transaction 的作用域内或者 Transaction 属性 (IDbTransaction) 是否设置为由用户启动的本地事务。 如果这两个事务均未找到,LINQ to SQL 会启动本地事务 (IDbTransaction),并使用此事务执行生成的 SQL 命令。 当所有 SQL 命令均已成功执行完毕时,LINQ to SQL 会提交本地事务并返回。

请参阅