Bonjour, dans une solution WPF j'exécute cette procédure stockée SQL via entityFramework comme suit.

1) Code de la procédure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
ALTER PROCEDURE [dbo].[PS_SAVEDOCUMENT]
	-- Add the parameters for the stored procedure here
@deId varchar(10),
@User varchar(50),
@ddId int,
@dddId int,
@lib varchar(100),
@mdp varchar(50),
@dateSave datetime,
@documentTag varchar(5)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
begin transaction;
 
	begin try
		if (@ddId <> 0 and @dddId <> 0)
		begin
		insert into STOREDATAS(KD_DATE_CREAT,KD_USER_CREAT,DE_ID,DD_ID,DDD_ID,KD_LIB,KD_MDP, CRDC_REFERENCE)
		select @dateSave,@User,@deId,@ddId,@dddId,@lib,@mdp, COALESCE(@documentTag, null);
		end
			if (@ddId <> 0 and @dddId = 0)
			begin
			insert into STOREDATAS(KD_DATE_CREAT,KD_USER_CREAT,DE_ID,DD_ID,KD_LIB,KD_MDP, CRDC_REFERENCE)
			select @dateSave,@User,@deId,@ddId,@lib,@mdp, COALESCE(@documentTag, null);
			end
				if (@ddId = 0 and @dddId = 0)
				begin
				insert into STOREDATAS(KD_DATE_CREAT,KD_USER_CREAT,DE_ID,KD_LIB, KD_MDP, CRDC_REFERENCE)
				select @dateSave,@User,@deId,@lib,@mdp, COALESCE(@documentTag, null);
				end
		commit transaction;
	end try
 
	begin catch
	if @@TRANCOUNT > 0 rollback transaction;
	end catch
END
2) Code C# :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public Task SaveDocument()
{
    try
    {
        using (ArchiveEntities dc = new ArchiveEntities())
        {
            int i = dc.PS_SAVEDOCUMENT(DirectoryId, Queries.UserId(), SubDirectoryId,
                              SsDirectoryId, $"{RenamedFile}{Extension}", null, DateSave, DocumentTagId);
            if (i == 0)
            {
                UserMessages.ShowMessage("Le document n'a pas été sauvegardé.", "Sauvegarde", UserMessages.MessageType.Error);
                return Task.CompletedTask;
            }
        }
        return Task.CompletedTask;
    }
    catch (Exception ex)
    {
        UserMessages.ShowMessage(ex.Message, "Sauvegarde", UserMessages.MessageType.Error);
        return Task.FromException(ex);
    }
}
lors de l'exécution j'ai ce message d'erreur :

SqlException : Le nombre des transactions après EXECUTE indique un nombre différent d'instructions BEGIN et COMMIT. Nombre précédent = 1, nombre actuel = 0.

Il me semble pourtant que ma procédure Stockée est correct...
Merci de votre aide