Return插入或更新或删除记录时记录的id

Return id of record when insert or update or delete record

当我使用 Dapper 插入或更新或删除实体时,我需要 return 实体的 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
                     });

但它没有显示任何内容。

我该怎么做?

那么,对于 UPDATEDELETE,您必须已经拥有 id,否则您将无法调用任何这些方法 - 对吗?

INSERT 的情况下,如果您的 table 在 SQL 服务器中并且有一个 INT IDENTITY 列,您可以使用这样的东西:

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

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

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

if (result != null)
{
    int newId = Convert.ToInt32(result);
}