gpt4 book ai didi

c# - 通过 dapper 从 sql 存储过程插入返回 -1(不是 "working")

转载 作者:行者123 更新时间:2023-11-30 23:14:46 25 4
gpt4 key购买 nike

我有一个“手动”工作的存储过程,但是当它通过 dapper 执行时,它返回一个“-1”并且没有错误。

存储过程:

  ... PROCEDURE [ts].[uspAddClientForm](
@ClientId int,
@SystemFormId bigint,
@Year int,
@Name nvarchar(255),
@CreatedBy nvarchar(2000),
@CreateDate datetime = NULL,
@Active bit = 1,
@ClientFormId bigint OUTPUT
)
AS
BEGIN
SET NOCOUNT ON
INSERT INTO [ts].[ClientForm] ([ClientId], [SystemFormId], [Year]
,[Name] ,[CreatedBy] ,[CreateDate], [Active])
VALUES(@ClientId, @SystemFormId, @Year, @Name, @CreatedBy, GETDATE(), @Active)

SET @ClientFormId = SCOPE_IDENTITY()
END

dapper相关代码:

   var formParams = new DynamicParameters();
formParams.Add("@ClientId", clientForm.ClientId);
formParams.Add("@SystemFormId", clientForm.SystemFormId);
formParams.Add("@Year", clientForm.Year);
formParams.Add("@Name", clientForm.Name);
formParams.Add("@CreatedBy", clientForm.Username);
formParams.Add("@CreateDate", DateTime.Now);
formParams.Add("@Active", 1);
formParams.Add("@ClientFormId", DbType.Int64, direction: ParameterDirection.Output);

var result = dbConnection.Execute("ts.uspAddClientForm", formParams, commandType: CommandType.StoredProcedure);

// retrieve output value
var clientId = formParams.Get<long>("@ClientFormId");

我也尝试过使用 ExecuteScalarQuery 返回 SCOPE_IDENTITY() 删除 OUTPUT 参数,但未成功在 SELECT 中。我更喜欢使用 OUTPUT 方式,但我对任何可行的方式都持开放态度,并且通常会订阅最佳实践。

最佳答案

下行不对,修改试试。

     formParams.Add("@ClientFormId", DbType.Int64, direction: ParameterDirection.Output);

为了,

     formParams.Add("@ClientFormId","",dbType: DbType.Int64, direction: ParameterDirection.Output);

关于c# - 通过 dapper 从 sql 存储过程插入返回 -1(不是 "working"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42907501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com