Asp.net-Core
Dapper for NET Core:插入表並返回插入行的 id
我的儲存庫中有以下方法。到目前為止,我相信返回的 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(); } }