插入、更新、删除记录时返回记录的id

mr-*_*taj 2 c# asp.net dapper asp.net-core

当我使用 Dapper 插入、更新或删除实体时,我需要返回id实体的。

我正在使用这段代码:

var role = await roleConnection.ExecuteAsync("UPDATE Role SET IsDelete = @isDelete, RoleName = @roleName, SecurityStamp = @securityStamp WHERE Role.Id = @id SELECT SELECT CAST(SCOPE_IDENTITY() AS INT)"
                     , new
                     {
                         isDelete = request.IsDelete = false,
                         roleName = request.RoleName,
                         securityStamp = Guid.NewGuid(),
                         id = request.Id
                     });
Run Code Online (Sandbox Code Playgroud)

但它没有向我显示任何内容。

我怎样才能做到这一点?

mar*_*c_s 5

UPDATE好吧,在或 的情况下DELETE,您必须已经拥有id,否则您无法调用这些方法中的任何一个 - 对吗?

对于INSERT,如果您的表位于 SQL Server 中并且有一INT IDENTITY列,您可以使用如下所示的内容:

INSERT INTO dbo.YourTable (list-of-columns)
OUTPUT Inserted.Id   -- or whatever your IDENTITY column is called
VALUES (list-of-values)
Run Code Online (Sandbox Code Playgroud)

然后从您的 C# 代码中,使用cmd.ExecuteScalar()(或者ExecuteScalarAsync,如果您愿意的话)运行它并返回单个原子值(新创建的id值):

var result = cmd.ExecuteScalar(....);

if (result != null)
{
    int newId = Convert.ToInt32(result);
}
Run Code Online (Sandbox Code Playgroud)