Mik*_*ins 1 dapper asp.net-core
我的存储库中有以下方法。到目前为止,我相信返回的int只是一个指示操作是否成功的int。我希望int是成功执行后返回的id(即表的单列)。我该如何完成?
public async Task<int> AddNewGroup()
{
using(_connection)
{
_connection.Open();
var id = await _connection.ExecuteAsync("INSERT INTO groups").Single();
}
}
Run Code Online (Sandbox Code Playgroud)
您不必手动创建插入查询,您可以使用Dapper.Contrib github来帮助您管理 CRUD 操作。
使用 Dapper.Contrib 您可以执行以下操作:
public async Task<int> AddNewGroup(Group entity)
{
using (_connection)
{
_connection.Open();
var id = await _connection.InsertAsync(entity);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以运行一个包含两部分的查询,第一部分是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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5811 次 |
| 最近记录: |