Возвращать идентификатор записи при вставке или обновлении или удалении записи - PullRequest
1 голос
/ 19 октября 2019

Когда я вставляю, обновляю или удаляю сущность с помощью Dapper, мне нужно вернуть id сущности.

Я использую этот код:

var role = await roleConnection.ExecuteAsync("UPDATE Role SET IsDelete = @isDelete, RoleName = @roleName, SecurityStamp = @securityStamp WHERE Role.Id = @id SELECT SELECT CAST(SCOPE_IDENTITY() AS INT)"
                     , new
                     {
                         isDelete = request.IsDelete = false,
                         roleName = request.RoleName,
                         securityStamp = Guid.NewGuid(),
                         id = request.Id
                     });

, но он ничего мне не показывает.

Как я могу это сделать?

1 Ответ

1 голос
/ 19 октября 2019

Что ж, в случае UPDATE или DELETE у вас уже должен быть идентификатор id, в противном случае вы не можете вызывать ни один из этих методов - правильно?

В случаеINSERT, если ваша таблица находится в SQL Server и имеет столбец INT IDENTITY, вы можете использовать что-то вроде этого:

INSERT INTO dbo.YourTable (list-of-columns)
OUTPUT Inserted.Id   -- or whatever your IDENTITY column is called
VALUES (list-of-values)

, а затем из своего кода C # используйте cmd.ExecuteScalar() (или ExecuteScalarAsync, если хотите, запустить его и получить одно атомарное значение (только что созданное значение id):

var result = cmd.ExecuteScalar(....);

if (result != null)
{
    int newId = Convert.ToInt32(result);
}
...