Nic*_*las 8 .net c# sql-server asp.net-mvc dapper
我正在使用Dapper并尝试从数据库中检索一个短片,并希望在不从集合中抓取它的情况下执行此操作.
我有以下代码,因为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返回单个值而不是集合吗?
Dav*_*dro 14
仅供参考,小巧玲珑现在又增加两个QuerySingle和QuerySingleAsync以及其相应的OrDefault变体......使用情况QuerySingleOrDefaultAsync是:
await connection.QuerySingleOrDefaultAsync<short>(sql);
Aft*_*med 12
要么你可以使用ExecuteScalarAsync或Single() 
与ExecuteScalarAsync您可以用小巧玲珑的从数据库中检索单个值.
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();
}