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
});
但它没有显示任何内容。
我该怎么做?
那么,对于 UPDATE
或 DELETE
,您必须已经拥有 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);
}
当我使用 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
});
但它没有显示任何内容。
我该怎么做?
那么,对于 UPDATE
或 DELETE
,您必须已经拥有 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);
}