Asp.net-Core

Dapper for NET Core:插入表並返回插入行的 id

  • October 5, 2021

我的儲存庫中有以下方法。到目前為止,我相信返回的 int 只是表明操作是否成功的一個值。我希望 int 是成功執行後要返回的 id (這是表的單列)。我如何做到這一點?

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

您可以執行一個包含 2 個部分的查詢,第一個是INSERT部分,第二個是SELECT部分。在 SELECT 部分,您可以返回(選擇)您想要的任何列值。

例如,如果您的組表有一個名為的主鍵列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();
  }
}

引用自:https://stackoverflow.com/questions/50650985