使用 SQL Server Profiler 进行分析:EF 6 使用BEGIN TRAN
和包装每个存储过程调用COMMIT TRAN
。
这不是一个突破性的变化吗?
也许这不仅是一项重大更改,而且使 SP 中的任何事务逻辑都变得不可能,因为我们永远无法使用存储过程回滚我们的事务ROLLBACK TRAN
(注意:SQL Server 中没有嵌套事务),因此一个回滚回滚@@TRANCOUNT
为零。因为我们在事务中,因为 EF 6 我们得到“EXECUTE 之后的事务计数表明 BEGIN 和 COMMIT 语句的数量不匹配。以前的计数 = 1,当前计数 = 0。” 标准 SQL Server 错误。
请不要问我为什么要调用存储过程。我有数百个,他们都在使用TRY ... COMMIT ... CATCH ROLLBACK
逻辑。
有什么想法可以防止 EF 6 这样做吗?