Возврат UUID вставленного элемента обратно из Dapper / PostgreSQL - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть такой объект модели в моем проекте 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);
}

Мне нужен гид, чтобы управлять следующей логикой. Возвращает затронутые стрелки (1). Мое исследование показывает, что для получения идентификатора автоинкремента используются несколько приемов (например, использование «MAX» и т. Д.).

Есть ли способ сделать это, предпочтительно через dapper? Или мне нужно вернуться к ADO.Net?

1 Ответ

0 голосов
/ 07 сентября 2018

Вы должны иметь возможность использовать предложение RETURNING оператора INSERT, чтобы Postgres возвращал вставленный идентификатор.

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