博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dapper学习(二)之Query相关
阅读量:5038 次
发布时间:2019-06-12

本文共 4308 字,大约阅读时间需要 14 分钟。

 

0. FIrst , Single & Default

使用这个方法时要小心,First 和 Single 是不同的。

 这里,对这个表做下说明:

如果使用 First , 当没有查到元素时,会报错;如果查到一个元素,会返回这个元素;如果查到多个元素,会返回第一个元素;

如果使用 Single , 没有查到元素会报错;查到一个元素,则返回这个元素;查到多个元素,则报错;

如果使用 FirstOrDefault , 没有查到元素会返回默认值;如果查到一个元素,则返回这个元素;如果查到多个元素,则返回第一个元素;

如果使用 SingleOrDefault , 没有查到元素返回默认值;如果查到一个元素,则返回这个元素;如果查到多个元素,则报错;

1. QueryFirst

可以用来查询和映射第一个结果

结果可以被映射到:

  • Anonymous
  • Strongly Typed

参数

1.1 Query Anonymous

执行一个查询,并且映射第一个结果到一个动态集合

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

1.2 Query Strongly Typed

执行一个查询,并且映射第一个结果到一个强类型集合

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

2. QueryFirstOrDefault

执行一个查询,并且映射第一个结果,或者如果没查到元素时,返回一个默认值

结果可以被映射到:

  • Anonymous
  • Strongly Typed

参数

 2.1 Query Anonymous

执行一个查询,并且映射第一个结果到一个动态集合,或者如果没查到元素,则返回一个默认值

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

2.2 Query Strongly Typed

执行一个查询,并且映射第一个结果到一个强类型集合,或者如果没查到元素,则返回一个默认值

string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools())){    var orderDetail = connection.QueryFirstOrDefault
(sql, new {OrderDetailID = 1}); FiddleHelper.WriteTable(new List
() { orderDetail });}

3. QuerySingle

执行查询,并且映射第一个结果,如果查到不止一个元素,则会抛出异常

结果可以映射到:

  • Anonymous
  • Strongly Typed

参数

 3.1 Query Anonymous

执行查询,映射第一个结果到一个动态集合,如果查到不止一个元素,抛出异常

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

3.2 Query Strongly Typed

执行查询,并且映射第一个结果到一个强类型集合,如果查到不止一个元素,则抛出异常

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

4. QuerySingleOrDefault

执行查询,并且映射第一个结果,或者如果查询结果为空,则返回默认值;如果查到不止一个元素,则抛出异常

结果映射到:

  • Anonymous
  • Strongly Typed

参数

 4.1 Query Anonymous

执行查询,并且映射第一个结果到一个动态集合,或者如果查询结果为空,则返回一个默认值;如果查到不止一个元素,则抛出异常。

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

4.2 Query Strongly Typed

执行查询,并且映射第一个结果到一个强类型集合,或者如果查询结果为空,则返回一个默认值;如果查到不止一个元素,则抛出异常

string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools())){                var orderDetail = connection.QuerySingleOrDefault
(sql, new {OrderDetailID = 1}); FiddleHelper.WriteTable(new List
() { orderDetail });}

5. QueryMultiple

它可以在同一个命令中执行多个查询,并且映射到结果中

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
().First(); var invoiceItems = multi.Read
().ToList(); }}

参数

 

转载于:https://www.cnblogs.com/Vincent-yuan/p/11515154.html

你可能感兴趣的文章
OI再见
查看>>
自定义单选框或者复选框
查看>>
xml知识点
查看>>
隐式类型转换
查看>>
目前国内几大著名报表软件(2014更新)
查看>>
我想要得那块牌—记烟台大学第一届"ACM讲堂"
查看>>
【LaTeX排版】LaTeX论文模版
查看>>
mysql 如何实现跨裤查询
查看>>
redis的string类型操作命令
查看>>
Uva 10305 给任务排序
查看>>
Uva 11396 爪分解
查看>>
Windows2012启动自动帐户登陆
查看>>
python中包的语法
查看>>
那些常考的问答面试题(三)
查看>>
使用Maven管理Spring、Spring MVC、Hibernate的Library
查看>>
iview实战 : 树形组件自定义
查看>>
cookie
查看>>
【Head First Java 读书笔记】(六)认识Java API
查看>>
什么是跨域,什么是同源
查看>>
Python基础之【第一篇】
查看>>