c# - 插入或更新或删除记录时返回记录的id
问题描述
当我使用 Dapper 插入或更新或删除实体时,我需要返回id
of 实体。
我正在使用这段代码:
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
});
但它没有向我展示任何东西。
我怎样才能做到这一点?
解决方案
好吧,在UPDATE
or的情况下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)
然后从您的 C# 代码中,使用cmd.ExecuteScalar()
(或者ExecuteScalarAsync
,如果您愿意)运行它并取回单个原子值(新创建的id
值):
var result = cmd.ExecuteScalar(....);
if (result != null)
{
int newId = Convert.ToInt32(result);
}