异常汇总:http://www.cnblogs.com/dunitian/p/4523006.html#dapper

今天帮群友整理Dapper基础教程的时候手脚快了点,然后遇到了一个小问题,Dapper QueryMultiple 返回数据的问题

多个返回值用QueryMultiple ,这个大家都知道,如果不清楚的看下下面的文档:

这个是官方文档:

Multiple Results

Dapper allows you to process multiple result grids in a single query.

Example:

var sql =
@"
select * from Customers where CustomerId = @id
select * from Orders where CustomerId = @id
select * from Returns where CustomerId = @id"; using (var multi = connection.QueryMultiple(sql, new {id=selectedId}))
{
var customer = multi.Read<Customer>().Single();
var orders = multi.Read<Order>().ToList();
var returns = multi.Read<Return>().ToList();
...
}

按照文档来,为啥没数据呢,就ID有值?难道多表只能传一个参数,而且必须有关系???NONONO,如果这么多限制还叫Dapper吗??

给你3s找错误。。。。。

其实就是顺序弄颠倒了,园友可以当个经验==》Dapper QueryMultiple并不会帮我们识别多个返回值的顺序

Read获取的时候必须是按照上面返回表的顺序 (article,qqmodel,seotkd)

var articleList = multi.Read<Temp>();//类不见得一定得和表名相同
var QQModelList = multi.Read<QQModel>();
var SeoTKDList = multi.Read<SeoTKD>();

官方文档是这样写的,那我们能不能玩点其他的?就一定得定义一个类来获取对应的强类型吗?多返回值就不能动态获取吗???NONONO

直接

if (!multi.IsConsumed)
{

  var articleList = multi.Read();
  var QQModelList = multi.Read();
  var SeoTKDList = multi.Read();

}

一样的效果

周日会有一篇文章详细说下Dapper的,现在得出省了。。。。立刻,马上。。。

附录:

            using (SqlConnection conn = new SqlConnection(connStr))
{
string sqlStr = @"select Id,Title,Author from Article where Id = @Id
select * from QQModel where Name = @Name
select * from SeoTKD where Status = @Status";
conn.Open();
using (var multi = conn.QueryMultiple(sqlStr, new { Id = 11, Name = "打代码", Status = 99 }))
{
//multi.IsConsumed reader的状态 ,true 是已经释放
if (!multi.IsConsumed)
{
////强类型
////注意一个东西,Read获取的时候必须是按照上面返回表的顺序 (article,qqmodel,seotkd)
//var articleList = multi.Read<Temp>();//类不见得一定得和表名相同
//var QQModelList = multi.Read<QQModel>();
//var SeoTKDList = multi.Read<SeoTKD>(); ////动态类型
var articleList = multi.Read();
var QQModelList = multi.Read();
var SeoTKDList = multi.Read(); #region 输出
foreach (var item in QQModelList)
{
Console.WriteLine(item.Id + " " + item.Name + " " + item.Count);
}
foreach (var item in SeoTKDList)
{
Console.WriteLine(item.Id + " | " + item.SeoKeywords);
}
foreach (var item in articleList)
{
Console.WriteLine(item.Author);
}
#endregion
} }
}

  

由Dapper QueryMultiple 返回数据的问题得出==》Dapper QueryMultiple并不会帮我们识别多个返回值的顺序的更多相关文章

  1. struts2使用jsp和&lt;s:property&gt;标签获取json格式的返回数据

    struts2使用jsp和<s:property>标签获取json格式的返回数据 1.struts2的action中 return "success"; 2.指向的返回 ...

  2. springMVC返回数据的四种方式

    转自:https://blog.csdn.net/itcats_cn/article/details/82119673 springMVC返回数据的四种方式:第一种,通过request.setAttr ...

  3. WebApi自定义全局异常过滤器及返回数据格式化

    WebApi在这里就不多说了,一种轻量级的服务,应用非常广泛.我这这里主要记录下有关 WebApi的相关知识,以便日后使用. 当WebApi应用程序出现异常时,我们都会使用到异常过滤器进行日志记录,并 ...

  4. .net Dapper 实践系列(4) ---数据查询(Layui+Ajax+Dapper+MySQL)

    写在前面 上一小节,总结了数据显示时,会出现的日期问题.以及如何处理格式化日期.这个小节,主要总结的是使用Dapper 中的QueryMultiple方法依次显示查询多表的数据. 实践步骤 1.在Bo ...

  5. FreeSql (二十一)查询返回数据

    FreeSql 采用 ExpressionTree 优化读取速读,如果懂技术的你一定知道 .NETCore 技术下除了原生代码,最快就是 Emit 和 ExpressionTree. 项目在初期使用的 ...

  6. ajax请求和aspx返回数据

    ajax请求: $(function () {            $.ajax({                url: "index.aspx?method=send",  ...

  7. android AsynTask处理返回数据和AsynTask使用get,post请求

    Android是一个单线程模型,Android界面(UI)的绘制都只能在主线程中进行,如果在主线程中进行耗时的操作,就会影响UI的绘制和事件的响应.所以在android规定,不可在主线中进行耗时操作, ...

  8. php给客户端返回数据注意。

    亲身测试: 返回的时候不要直接返回字符串,要用数组的方式返回数据客户端才能接收. 看代码. <?php require_once("../base.php"); functi ...

  9. ASP.NET API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理

    话不多说,直接进入主题. 需求:基于Http请求接收Json格式数据,返回Json格式的数据. 整理:对接收的数据与返回数据进行统一的封装整理,方便处理接收与返回数据,并对数据进行验证,通过C#的特性 ...

随机推荐

  1. keyup与setInterval

    <html><body> <input type="text" id="clock" size="35" /& ...

  2. 如何优化cocos2d程序的内存使用和程序大小:第一部分

    译者: 在我完成第一个游戏项目的时候,我深切地意识到“使用cocos2d来制作游戏的开发者们,他们大多会被cocos2d的内存问题所困扰”.而我刚开始接触cocos2d的时候,社区里面的人们讨论了一个 ...

  3. Ibatis对日期的处理

    最近在项目中出现两种情况(因为项目比较早,经历各个版本的改动,所有设计不一致),第一种:数据库中某一字段为Date类型,对应的bean中的类型为java.util.Date,所有在对应的映射中会出现字 ...

  4. Java POI Word 写文档

    package apache.poi; import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import ...

  5. 转: ios app架构设计

    http://keeganlee.me/post/architecture/20160107 看完这一系列文章后就知道怎么回答这类问题了: App架构设计经验谈:接口的设计 App架构设计经验谈:技术 ...

  6. wcf自身作为宿主的一个小案例

    第一步:创建整个解决方案 service.interface:用于定义服务的契约(所有的类的接口)引用了wcf的核心程序集system.ServiceModel.dll service:用于定义服务类 ...

  7. JavaScript基础知识----六道有趣的Js基础题以及解答

    题目: 1.找出数字数组中最大的元素(使用Math.max函数)2.转化一个数字数组为function数组(每个function都弹出相应的数字)3.给object数组进行排序(排序条件是每个元素对象 ...

  8. 3道acm简单题(2011):1.判断是否能组成三角形;2.判断打鱼还是晒网;3.判断丑数。

    //1.输入三个正整数A.B.C,判断这三个数能不能构成一个三角形.//思路:最小的两边之和是否是大于第三边#include<iostream>#include<algorithm& ...

  9. 手写数字识别 ----卷积神经网络模型官方案例注释(基于Tensorflow,Python)

    # 手写数字识别 ----卷积神经网络模型 import os import tensorflow as tf #部分注释来源于 # http://www.cnblogs.com/rgvb178/p/ ...

  10. ISP PIPLINE (七) gamma

    what is the gamma? CCD.CMOS成像方式是通过像点中的"硅"感受光线的强弱而获得画面.而硅感光是物理成像,它真实地反应光线强度的变化,来多少就输出多少,因此它 ...