在我的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?
答案 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);
}