当我使用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
});
但是它什么也没给我显示。
我该怎么做?
答案 0 :(得分:1)
好吧,对于UPDATE
或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);
}