这里是我的存储过程。当我测试它时,总是得到正确的结果。使用Dapper.net调用存储过程,总是返回-1回
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
但是,当我使用dapper.net调用此存储过程时,总是返回-1。
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);
}
可能dapper.net无法从存储过程中获取返回值。但我真的不知道如何解决它。请帮忙。
感谢。但你仍然需要使用execute,我在网上发现了另一个示例,它可以工作。 – qinking126