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

QuerySingle

描述

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

结果可以映射到:

  • 匿名类型
  • 强类型

参数

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

名称描述
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.QuerySingle(sql, new {InvoiceID = 1});
}

案例 - 查询强类型

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

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

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

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

QuerySingleOrDefault

描述

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

结果可以映射到:

  • 匿名类型
  • 强类型

参数

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

名称描述
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.QuerySingleOrDefault(sql, new {InvoiceID = 1});
}

案例 - 查询强类型

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

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

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

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

QueryMultiple

描述

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

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

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

    using (var multi = connection.QueryMultiple(sql, new {InvoiceID = 1}))
    {
        var invoice = multi.Read<Invoice>().First();
        var invoiceItems = multi.Read<InvoiceItem>().ToList();
    }
}

参数

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

名称描述
sql要执行的查询。
param查询参数(默认为null)。
transaction需要使用的事务(默认为null)。
commandTimeout命令执行超时时间(默认为null)。
commandType命令类型(默认为null)。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值