Dapper를 사용하여 데이터베이스에서 단일 값을 검색하는 방법

.net asp.net-mvc c# dapper sql-server

문제

나는 Dapper를 사용 중이며 데이터베이스에서 short를 검색하려고 시도하고 있으며 컬렉션에서 가져 오지 않고이 작업을 수행하려고합니다.

QueryAsync<short>IEnumerable<short> 반환하기 때문에 작동하지 않는 다음 코드가 있습니다.

short status;
using (var sqlConnection = new SqlConnection(connectionString))
{
    var parameters = new DynamicParameters();
    parameters.Add("@ID", ID, DbType.Int32, ParameterDirection.Input);

    await sqlConnection.OpenAsync();
    status = await sqlConnection.QueryAsync<short>("SELECT [StatusID] FROM [MyTable] WHERE [ID] = @ID", parameters, commandTimeout: _sqlCommandTimeoutInSeconds);
}

Dapper가 컬렉션 대신 단일 값을 반환하도록 할 수 있습니까?

수락 된 답변

ExecuteScalarAsync 또는 Single()ExecuteScalarAsync 와 함께 사용하면 Dapper를 사용하여 데이터베이스에서 단일 값을 검색 할 수 있습니다.

short status;
using (var sqlConnection = new SqlConnection(connectionString))
{
  var parameters = new DynamicParameters();
  parameters.Add("@ID", ID, DbType.Int32, ParameterDirection.Input);

  await sqlConnection.OpenAsync();
  status = await sqlConnection.ExecuteScalarAsync<short>("SELECT [StatusID] FROM     [MyTable] WHERE [ID] = @ID", parameters, commandTimeout: _sqlCommandTimeoutInSeconds);
}

Single() 은 이런 방식으로 사용될 수 있습니다.

short status;
using (var sqlConnection = new SqlConnection(connectionString))
{
  var parameters = new DynamicParameters();
  parameters.Add("@ID", ID, DbType.Int32, ParameterDirection.Input);

 await sqlConnection.OpenAsync();
 status = await sqlConnection.QueryAsync<short>("SELECT [StatusID] FROM [MyTable] WHERE [ID] = @ID", parameters, commandTimeout: _sqlCommandTimeoutInSeconds).Single();
}

인기 답변

ExecuteScalar 를 사용해야 ExecuteScalar .

status = await sqlConnection.ExecuteScalarAsync<short>("SELECT [StatusID] FROM [MyTable] WHERE [ID] = @ID", parameters, commandTimeout: _sqlCommandTimeoutInSeconds)


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow