Получить вставленный идентификатор обратно из хранимой процедуры SqlConnection.Execute - PullRequest
0 голосов
/ 05 августа 2020

Я вставляю данные в свою базу данных следующим образом:

using (IDbConnection conn = new SqlConnection(connectionString))
{
    conn.Execute(storedProcedure, parameters, commandType: CommandType.StoredProcedure);
}

Я добавил select SCOPE_IDENTITY(); в свои хранимые процедуры, поэтому теперь из запроса возвращается идентификатор. Как я могу получить к нему доступ?

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Используйте ExecuteScalar.

using (IDbConnection conn = new SqlConnection(connectionString))
{
   var command = conn.CreateCommand();
   command.CommandType = CommandType.StoredProcedure;
   command.CommandText = "MyProcedure";
   var id = Convert.ToInt32(command.ExecuteScalar());
}
0 голосов
/ 05 августа 2020

Это похоже на Dapper, да? Итак: вместо использования Execute используйте QuerySingle<T> для любого T, которое вы выбираете - предположительно int или long:

var id = conn.QuerySingle<int>(storedProcedure, parameters,
    commandType: CommandType.StoredProcedure);

В качестве примечания: вам может быть проще в используйте предложение OUTPUT во время INSERT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...