从Dapper / PostgreSQL返回插入的项目的UUID

Gli*_*kot 3 c# postgresql dapper asp.net-core

我的ASP.Net Core 2.1 Web API项目中有一个模型对象,如下所示:

public class Tenant
{
    public Guid Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并且正在像这样在postgres中执行插入:

public async Task<int> CreateItem(Tenant item)
{
    return await db.ExecuteAsync($@"INSERT INTO tenants (Name) VALUES (@Name)", item);
}
Run Code Online (Sandbox Code Playgroud)

我需要Guid来驱动后续逻辑。它返回受影响的行(1)。我的研究表明,有一些技巧可用于获取自动增量ID(例如使用“ MAX”等)。

有没有办法做到这一点,最好是通过dapper?还是我需要退回到ADO.Net?

Vik*_*iph 6

您应该能够使用INSERT语句的RETURNING子句使Postgres返回插入的ID。

public async Task<Guid> CreateItem(Tenant item)
{
    return await db.ExecuteScalarAsync<Guid>($@"INSERT INTO tenants (Name) VALUES (@Name) RETURNING Id", item);
}
Run Code Online (Sandbox Code Playgroud)