Dapper - QuerySingle

Description

QuerySingle method is an extension method that can be called from any object of type IDbConnection. It can execute a query and map the first result and throws an exception if there is not exactly one element in the sequence.

The result can be mapped to:

Parameters

The following table shows the different parameters of a QuerySingle method.

NameDescription
sqlThe query to execute.
paramThe query parameters (default = null).
transactionThe transaction to use (default = null).
commandTimeoutThe command timeout (default = null)
commandTypeThe command type (default = null)

First, Single & Default

Be careful to use the right method. First & Single methods are very different.

ResultNo ItemOne ItemMany Items
FirstExceptionItemFirst Item
SingleExceptionItemException
FirstOrDefaultDefaultItemFirst Item
SingleOrDefaultDefaultItemException

Example - Query Anonymous

Execute a query and map the first result to a dynamic list, and throws an exception if there is not exactly one element in the sequence.

  1. string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";
  2. using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
  3. {
  4. var orderDetail = connection.QuerySingle(sql, new {OrderDetailID = 1});
  5. FiddleHelper.WriteTable(orderDetail);
  6. }

Try it: .NET Core | .NET Framework

Example - Query Strongly Typed

Execute a query and map the first result to a strongly typed list, and throws an exception if there is not exactly one element in the sequence.

  1. string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";
  2. using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
  3. {
  4. var orderDetail = connection.QuerySingle<OrderDetail>(sql, new {OrderDetailID = 1});
  5. FiddleHelper.WriteTable(new List<OrderDetail>() { orderDetail });
  6. }

Try it: .NET Core | .NET Framework