在 .NET Core 中使用 Dapper 从存储过程插入中获取 ID
Get id from stored procedure insert with Dapper in .NET Core
我正在使用 Dapper,我编写了一个存储过程来插入一行和 returns 标识值。
使用 Dapper,我想捕获此标识值,但结果以动态类型返回,我不知道如何访问此标识。
我的存储过程:
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 的任何变体都可以,但在语义上不正确。您不是在查询数据库;您正在执行存储过程。
我正在使用 Dapper,我编写了一个存储过程来插入一行和 returns 标识值。
使用 Dapper,我想捕获此标识值,但结果以动态类型返回,我不知道如何访问此标识。
我的存储过程:
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 的任何变体都可以,但在语义上不正确。您不是在查询数据库;您正在执行存储过程。