【发布时间】:2021-04-08 07:39:34
【问题描述】:
我是 Dapper 的新手 - 请帮助我。插入成功后如何获取插入的记录值?
存储过程:
ALTER PROCEDURE Sp_InsertTestData
@Name varchar(50),
@gender int,
@refres int OUTPUT
AS
BEGIN
INSERT INTO Test_Master (Name, Gender)
VALUES (@Name, @gender);
SELECT @refres = SCOPE_IDENTITY()
SELECT @refres as M_SID
END
当我像这样在 SQL 中执行这个存储过程时:
DECLARE @refres INT
EXEC Sp_InsertTestData 'test12',1,@refres
我得到一个显示最后插入行的值的输出。
但是当这个存储过程从 C# 代码中执行时,每次我得到的值都是 1:
using (SqlConnection con = new SqlConnection(_configuration.GetConnectionString("DatabaseConnection")))
{
con.Open();
SqlTransaction sqltrans = con.BeginTransaction();
var param = new DynamicParameters();
param.Add("@Name", Bindtestmaster.Name);
param.Add("@gender", Bindtestmaster.Gender);
param.Add("@refres");
res = con.Execute("Sp_InsertTestData", param, sqltrans, 0, CommandType.StoredProcedure);
}
【问题讨论】:
-
我对此并不熟悉,但也许
res是更新记录数的计数,这将是一个。插入后数据库保存了什么 -
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀!