ecco la mia stored procedure. quando lo collaudo, ottengo sempre risultati corretti.Utilizzando Dapper.net per chiamare la stored procedure, restituire sempre -1 back
ALTER PROCEDURE [dbo].[AddSmoothieIngredients]
-- Add the parameters for the stored procedure here
@Query NVARCHAR(4000) ,
@SmoothieId INT ,
@CreatedDate DATETIME ,
@Status INT ,
@UserId INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
BEGIN TRY
BEGIN TRAN
IF @SmoothieId > 0
BEGIN
DELETE FROM dbo.SmoothieIngredients
WHERE SmoothieId = @SmoothieId;
EXECUTE (@Query);
END
ELSE
BEGIN
IF @UserId = 0
SET @UserId = NULL;
INSERT INTO dbo.Smoothie
(Name, CreatedDate, Status, UserId)
VALUES (N'', @CreatedDate, @Status, @UserId);
SET @SmoothieId = SCOPE_IDENTITY();
SET @Query = REPLACE(@Query, 'sId', @SmoothieId);
EXECUTE (@Query);
END
COMMIT TRAN
RETURN @SmoothieId
END TRY
BEGIN CATCH
ROLLBACK
END CATCH
END
Tuttavia Quando chiamo questa stored procedure utilizzando dapper.net, restituisco sempre -1 indietro.
using (var conn = OpenConnection())
{
var parameter = new { Query = query, SmoothieId = smoothieId, CreatedDate = createdDate, Status = status, UserId = userId };
return conn.Execute("AddSmoothieIngredients", parameter, commandType: CommandType.StoredProcedure);
}
Probabilmente dapper.net non è in grado di rilevare il valore restituito dalla stored procedure. ma davvero non so come aggiustarlo per favore aiuto.
grazie. ma devi ancora usare execute, ho trovato un altro esempio online e funziona. – qinking126