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

时间:2019-10-19 17:22:00

标签: c# asp.net asp.net-core dapper

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

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

我该怎么做?

1 个答案:

答案 0 :(得分:1)

好吧,对于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);
}