在 .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 的任何变体都可以,但在语义上不正确。您不是在查询数据库;您正在执行存储过程。