我有一个存储过程
CREATE PROCEDURE [dbo].[GetNextImageRequest]
(...) AS
DECLARE @ReturnValue BIT
SET @ReturnValue = 1
-- Set paranoid level isolation: only one access at a time!
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRANSACTION
BEGIN TRY
...
UPDATE STATEMENT THAT THROWS FOREIGN KEY EXCEPTION
IF @@trancount > 0
BEGIN
COMMIT TRANSACTION
END
SET @ReturnValue = 0
END TRY
BEGIN CATCH
IF @@trancount > 0
BEGIN
ROLLBACK TRANSACTION
END
SET @ReturnValue = 1
END CATCH
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SET NOCOUNT ON
RETURN @ReturnValue -- 0=success
GO
当我从 Sql Server Management studio 手动调用它时,我没有得到任何异常。 当我通过 Entity Framework 6 调用它时,我得到 p>
Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 1, current count = 0.
我做错了什么?外键约束正在回滚,但我正在检查@@TRANCOUNT。
最佳答案
Entity Framework 6 (EF6) 在 ExecuteSqlCommand 之前添加这一行
db.Configuration.EnsureTransactionsForFunctionsAndCommands = false;
关于entity-framework - 仅 EntityFramework 中的事务不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18500617/