插入,更新或删除记录时返回记录的ID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了插入,更新或删除记录时返回记录的ID相关的知识,希望对你有一定的参考价值。

当我使用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
                     });

但是它什么也没给我显示。

我该怎么做?

答案

好吧,在UPDATEDELETE的情况下,您已经具有`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)

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

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

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

以上是关于插入,更新或删除记录时返回记录的ID的主要内容,如果未能解决你的问题,请参考以下文章

SQL插入和更新不会更新或插入所有记录,只有少数记录

如果 mysql 数据库中的表中不存在,则更新或插入多条记录

CodeIgniter - 如果新的或更新的重复记录则插入活动记录

oracle,FORM,删除数据时,只能按插入的顺序删除,才不会报错。(FRM 40654 记录已被其他使用者更新 )

MyBatis 插入时返回刚插入记录的主键值

在 asp.net core 中插入/更新记录时出错