Dapper官方文档(四)【方法之QueryFirst,QueryFirstOrDefault】

沈实
2023-12-01

QueryFirst

描述

QueryFirst是一个可以从IDbConnection类型的任意对象调用的扩展方法,它可以执行查询并映射第一个结果。

结果可以映射到:

  • 匿名类型
  • 强类型

参数

下表显示了QueryFirst方法的不同参数。

名称描述
sql要执行的查询。
param查询参数(默认为null)。
transaction需要使用的事务(默认为null)。
commandTimeout命令执行超时时间(默认为null)。
commandType命令类型(默认为null)。

First, Single & Default

注意使用正确的方法。FirstSingle的方法是非常不同的。

结果没有项有一项有多项
First抛异常当前项第一项
Single抛异常当前项抛异常
FirstOrDefault默认值当前项第一项
SingleOrDefault默认值当前项抛异常

案例 - 查询匿名类型

执行查询并将第一个结果映射到动态类型列表。

string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";

using (var connection = My.ConnectionFactory())
{
    connection.Open();

    var invoice = connection.QueryFirst(sql, new {InvoiceID = 1});
}

案例 - 查询强类型

执行查询并将第一个结果映射到强类型列表。

string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";

using (var connection = My.ConnectionFactory())
{
    connection.Open();

    var invoice = connection.QueryFirst<Invoice>(sql, new {InvoiceID = 1});
}

QueryFirstOrDefault

描述

QueryFirstOrDefault是一个可以从IDbConnection类型的任意对象调用的扩展方法,它可以执行查询并映射第一个结果,如果序列不包含任何元素则为默认值。

结果可以映射到:

  • 匿名类型
  • 强类型

参数

下表显示了QueryFirstOrDefault方法的不同参数。

名称描述
sql要执行的查询。
param查询参数(默认为null)。
transaction需要使用的事务(默认为null)。
commandTimeout命令执行超时时间(默认为null)。
commandType命令类型(默认为null)。

First, Single & Default

注意使用正确的方法。FirstSingle的方法是非常不同的。

结果没有项有一项有多项
First抛异常当前项第一项
Single抛异常当前项抛异常
FirstOrDefault默认值当前项第一项
SingleOrDefault默认值当前项抛异常

案例 - 查询匿名类型

执行查询并将第一个结果映射到动态类型列表,如果序列不包含任何元素则为默认值。

string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";

using (var connection = My.ConnectionFactory())
{
    connection.Open();

    var invoice = connection.QueryFirstOrDefault(sql, new {InvoiceID = 1});
}

案例 - 查询强类型

执行查询并将第一个结果映射到强类型列表,如果序列不包含任何元素则为默认值。

string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";

using (var connection = My.ConnectionFactory())
{
    connection.Open();

    var invoice = connection.QueryFirstOrDefault<Invoice>(sql, new {InvoiceID = 1});
}
 类似资料: