代码之家  ›  专栏  ›  技术社区  ›  Glinkot

从Dapper/PostgreSQL返回插入项的UUID

  •  2
  • Glinkot  · 技术社区  · 6 年前

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

    我在postgres中执行一个insert,如下所示:

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

    我需要返回Guid,以驱动后续逻辑。它返回affectedrows(1)。我的研究显示了一些用于获取自动增量ID的技巧(比如使用“MAX”等等)。

    1 回复  |  直到 6 年前
        1
  •  8
  •   Viktor Griph    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);
    }