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


以上是在.NETCore中使用Dapper从存储过程插入获取id的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>