Net Core的Dapper:插入到表中并返回插入行的ID [英] Dapper for NET Core: Insert into a table and return id of inserted row

查看:0
本文介绍了Net Core的Dapper:插入到表中并返回插入行的ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的存储库中有以下方法。到目前为止,我相信返回的int只是指示操作是否成功的一个。我希望int是在成功执行后返回的id(表的单个列)。我如何完成此操作?

    public async Task<int> AddNewGroup()
    {
        using(_connection)
        {
            _connection.Open();
            var id = await _connection.ExecuteAsync("INSERT INTO groups").Single();
        }
    }

推荐答案

您可以运行包含两部分的查询,第一部分是您的插入部分,第二部分是选择部分。在选择部分中,您可以返回(选择)所需的任何列值。

例如,如果您的组表有一个名为GroupId的主键列,并且您已将该列设置为身份值生成(自动值生成),则可以调用SCOPE_IDENTITY()来获取所生成的值。

我们将使用QueryAsync方法。

public async Task<int> AddNewGroup()
{
   using(_connection)
   {
      _connection.Open();
      var q = @"INSERT INTO Groups(Name,Description) VALUES
                 (@name, @desc); SELECT CAST(SCOPE_IDENTITY() as int)"
      var result = await _connection.QueryAsync<int>(q, 
                                          new { @name="some name", @desc="some desc"});
      return result.Single();
   }
}

这篇关于Net Core的Dapper:插入到表中并返回插入行的ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆