在.NETCore中使用Dapper从存储过程插入获取id
c#
我正在使用 Dapper,并且编写了一个存储过程,用于插入一行并返回标识值。
使用Dapper,我想捕获这个标识值,但结果作为动态类型返回,我不知道如何访问这个id。
我的存储过程:
CREATE PROCEDURE USER_INSERT
(@name varchar(30),
@job varchar(30))
AS
BEGIN
INSERT INTO User (name, job)
VALUES (@name, @job)
SELECT SCOPE_IDENTITY()
END
C#代码:
public async Task<int> InsertTest()
{
using (var connection = new SqlConnection("myconnectionstring"))
{
string SP_INSERT = "USER_INSERT";
var parameters = new { name = "Jon", job = "developer" };
var insert = await connection.QueryAsync(SP_INSERT, parameters, commandType: CommandType.StoredProcedure);
var resultInsert = insert.SingleOrDefault();
}
return 0; //only for test
}
查询结果截图,如何访问我的id字段?
回答
为此使用 ExecuteScalar。
int identity = await connection.ExecuteScalar<int>(SP_INSERT, parameters, commandType: CommandType.StoredProcedure);
使用 Query 或 QueryFirst 或 Query 的任何变体都可以,但在语义上不正确。您不是在查询数据库;你正在执行一个存储过程。