使用 SQL Server Profiler 进行分析:EF 6 带有 BEGIN TRAN
和 COMMIT TRAN
包装的每个存储过程调用。
这难道不是一个破坏性的改变吗?
或许这不仅是个破坏性的变化,而且使得存储过程中任何事务逻辑都不可能用 ROLLBACK TRAN
来回滚(注意: 在 SQL Server 中没有嵌套的事务), 当我们回滚到 @@TRANCOUNT
为零时就会出现 "执行后的事务计数表明 BEGIN 和 COMMIT 语句不匹配。之前的计数 = 1, 当前计数 = 0." 的标准 SQL Server 错误,因为 EF 6 所以我们正处于事务中。
请不要问我为什么想调用存储过程。我有成百上千个存储过程,它们都使用了 TRY ... COMMIT ... CATCH ROLLBACK
逻辑。
有什么办法可以防止 EF 6 这样做吗?
UseTransaction
并手动启动自己怎么样? - cincura.net