I have a sproc
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
When i call this manually from Sql Server Management studio, i don't get any exception. When I Call this through Entity Framework 6, i get
Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 1, current count = 0.
What am I doing wrong? The foreign key constraint is doing roll back but i am checking @@TRANCOUNT.
Entity Framework 6 (EF6) Add this line before ExecuteSqlCommand
db.Configuration.EnsureTransactionsForFunctionsAndCommands = false;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With