Dapper官方文档(五)【方法之QuerySingle,QuerySingleOrDefault,QueryMultiple】

布满荆棘的人生 2021-07-04 17:04 688阅读 0赞

QuerySingle

描述

QuerySingle是一个可以从IDbConnection类型的任意对象调用的扩展方法,它可以执行查询并映射第一个结果,如果序列中没有元素则会引发异常。

结果可以映射到:

  • 匿名类型
  • 强类型

参数

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






























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

First, Single & Default

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




































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

案例 - 查询匿名类型

执行查询并将第一个结果映射到动态类型列表,如果序列中没有元素则会引发异常。

  1. string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";
  2. using (var connection = My.ConnectionFactory())
  3. {
  4. connection.Open();
  5. var invoice = connection.QuerySingle(sql, new { InvoiceID = 1});
  6. }

案例 - 查询强类型

执行查询并将第一个结果映射到强类型列表,如果序列中没有元素则会引发异常。

  1. string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";
  2. using (var connection = My.ConnectionFactory())
  3. {
  4. connection.Open();
  5. var invoice = connection.QuerySingle<Invoice>(sql, new { InvoiceID = 1});
  6. }

QuerySingleOrDefault

描述

QuerySingleOrDefault是一个可以从IDbConnection类型的任意对象调用的扩展方法,它可以执行查询并映射第一个结果,如果序列为空则为默认值。如果序列中有多个元素,则此方法将引发异常。

结果可以映射到:

  • 匿名类型
  • 强类型

参数

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






























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

First, Single & Default

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




































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

案例 - 查询匿名类型

执行查询并将第一个结果映射到动态类型列表,如果序列为空则为默认值。如果序列中有多个元素,则此方法将引发异常。

  1. string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";
  2. using (var connection = My.ConnectionFactory())
  3. {
  4. connection.Open();
  5. var invoice = connection.QuerySingleOrDefault(sql, new { InvoiceID = 1});
  6. }

案例 - 查询强类型

执行查询并将第一个结果映射到强类型列表,如果序列为空则为默认值。如果序列中有多个元素,则此方法将引发异常。

  1. string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";
  2. using (var connection = My.ConnectionFactory())
  3. {
  4. connection.Open();
  5. var invoice = connection.QuerySingleOrDefault<Invoice>(sql, new { InvoiceID = 1});
  6. }

QueryMultiple

描述

QueryMultiple是一个可以从IDbConnection类型的任意对象调用的扩展方法,它可以在相同的命令和映射结果中执行多个查询。

  1. string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID; SELECT * FROM InvoiceItem WHERE InvoiceID = @InvoiceID;";
  2. using (var connection = My.ConnectionFactory())
  3. {
  4. connection.Open();
  5. using (var multi = connection.QueryMultiple(sql, new { InvoiceID = 1}))
  6. {
  7. var invoice = multi.Read<Invoice>().First();
  8. var invoiceItems = multi.Read<InvoiceItem>().ToList();
  9. }
  10. }

参数

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






























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

发表评论

表情:
评论列表 (有 0 条评论,688人围观)

还没有评论,来说两句吧...

相关阅读