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

时间:2018-09-07 03:52:48

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

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

public class Tenant
{
    public Guid Id { get; set; }
    public string Name { get; set; }
}

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

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

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

有没有一种方法,最好是通过精巧的工具?还是我需要退回到ADO.Net?

1 个答案:

答案 0 :(得分:5)

您应该能够使用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);
}