Я использую Dapper и написал хранимую процедуру, которая вставляет строку и возвращает значение идентификатора.
С Dapper я хочу зафиксировать это значение идентификатора, но результат возвращается как динамический тип, и я не знаю, как получить доступ к этому идентификатору.
Моя хранимая процедура:
CREATE PROCEDURE USER_INSERT
(@name varchar(30),
@job varchar(30))
AS
BEGIN
INSERT INTO User (name, job)
VALUES (@name, @job)
SELECT SCOPE_IDENTITY()
END
Код С#:
public async Task<int> InsertTest()
{
using (var connection = new SqlConnection("myconnectionstring"))
{
string SP_INSERT = "USER_INSERT";
var parameters = new { name = "Jon", job = "developer" };
var insert = await connection.QueryAsync(SP_INSERT, parameters, commandType: CommandType.StoredProcedure);
var resultInsert = insert.SingleOrDefault();
}
return 0; //only for test
}
Скриншот результата запроса, как получить доступ к моему id
полю?
Используйте для этого ExecuteScalar.
int identity = await connection.ExecuteScalar<int>(SP_INSERT, parameters, commandType: CommandType.StoredProcedure);
Использование Query или QueryFirst или любого варианта Query будет работать, но семантически неправильно. Вы не запрашиваете базу данных; вы выполняете хранимую процедуру.