1. 程式人生 > >由Dapper QueryMultiple 返回資料的問題得出==》Dapper QueryMultiple並不會幫我們識別多個返回值的順序

由Dapper QueryMultiple 返回資料的問題得出==》Dapper QueryMultiple並不會幫我們識別多個返回值的順序

今天幫群友整理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並不我們識別返回順序

今天幫群友整理Dapper基礎教程的時候手腳快了點,然後遇到了一個小問題,Dapper QueryMultiple 返回資料的問題 多個返回值用QueryMultiple ,這個大家都知道,如果不清楚的看下下面的文件: 這個是官方文件: Multiple Results Dapper allows

jmeter 正則獲取返回token至本地文件,並跨線程組調用

mage 表達 processor csv文件 參數 res 例如 通過 mark 1、打開jmeter,創建setup Thread Group對於setup Thread Group和tearDown Thread Group來說,從字面意思上來看就是安裝線程組和卸載線

resultset 查詢時返回相同

代碼生成器 ast rim 解決 簡單的 自帶 logback maven 大寫 背景 做個簡單的接口開發,拿到的平臺比較不理想,好久沒重新搭建一個了,正好練練手。用了基礎的servlet,maven,logback(log4j不支持格式化,比較煩人),fastjson,d

Go中返回的技巧

直接上程式碼看個例子吧: package main import "fmt" //返回 X+Y 和 X*Y func Computer(X, Y int) (int, int) { return X+Y, X*Y } func main() { x := 10 y := 2

PYTHON自動化Day6-函式返回和匿名函式、列表生成式,三元運算子,os模組,sys模組,時間模組,字典排序,資料庫操作,加密(md5)

一.函式多個返回值和匿名函式 #函式返回多個值,用一個變數接收 def say(): num1=1 num2=2 num3=3 return num1,num2,num3 res=say() print(res) #打印出來是元組。 函式如果返回多個值的話,會把返回的

【原創】EXCEL公式經驗(7)---EXCLE一般都是返回單個值得,如何寫公式返回匹配

  (1)一般excel都只能在一個單元格,且是輸入公式的這個單元格,返回一個值 (2)少數情況,可以在這個一單元格返回多個值 (3)現在考慮的是,輸入公式後,可以返回多個值    看起來公式還是遵循了(1)原則   INDEX($A:$A

C# 委託/Func() 中 GetInvocationList() 方法的使用 | 接收委託返回

在日常使用委託時,有以下常用方法 方法名稱 說明  Clone   建立委託的淺表副本。  GetInvocationList   按照呼叫順序返回此多路廣播委託的呼叫列表。

C#.架構設計 資料(二)c# 專案中包含了模組或功能,如何靈活開啟/關閉、新增/刪除某個模組或功能

一、簡介       不知不覺,短短几個月的時間,我已經寫了大大小小100篇部落格。短短几個月的時間,見證了我的努力、我的收穫、我的學習效率。從一開始的零基礎,到現在我需要了解整個專案的設計架構,才能來滿足我的設計需求。      

ASP.NET 有返回的函式

1. 函式: public (string, string, int, double) FunctionName(string ID) {     string a1 = "";    //第1個返回值   &nbs

2018/12/25利用指標返回函式

7-7 利用指標返回多個函式值 (25 分) 讀入n個整數,呼叫max_min()函式求這n個數中的最大值和最小值。 輸入格式: 輸入有兩行: 第一行是n值; 第二行是n個數。 輸出格式: 輸出最大值和最小值。 輸入樣例: 在這裡給出一組輸入。例如: 5 8 9 12 0 3

每日學點python之九(神奇的函式)----返回及不定長引數

今天學習python的函式,發現它與c/c++有很大的區別,感覺很不可思議。 1.函式返回多個值 In [3]: def divid(a,b): ...: result=a//b ...: remain=a%b ...: return resul

函式返回與unpack的用法

-- return the index of max number and himself -- 函式可以返回多個值 function get_max( T ) local index = 1 local max = T[1] for i, v i

C++中pair的用法以及函式的返回的用法

注意:文章為轉載多人的部落格,我只是綜合一下。pair的型別:    pair 是 一種模版型別。每個pair 可以儲存兩個值。這兩種值無限制。也可以將自己寫的struct的物件放進去。。    pair<string,int> p;    pair<int

如何編寫有返回的C語言函式

1引言      筆者從事C語言教學多年,在教學中學生們常常會問到如何編寫具有多個返回值的C語言函式。編寫有多個返回值的函式是所有C語言教材裡均沒有提到的知識點,但在實際教學與應用的過程中我們都有可能會遇到這樣的問題。有學生也嘗試了不少方法:如把多個需要返回的值作相應的處理後變成一個可以用return語

spring執行緒返回 並對返回進行操作

最近遇到一個問題:有一大堆的債券,需要根據不同類別的標籤進行篩選出需要的債券,並且還要根據條件對這些標籤分別進行並和或操作。 最終決定使用callable+future來實現: 具體程式碼如下: @RequestMapping("/test") public Object

Dapper系列之三:Dapper的修改與刪除

幫助 一個 。。 講解 復制 upd font 希望 update Dapepr的Update和Delete 上兩篇文章我們介紹Dapper中添加和查詢。本篇文章我們繼續講解修改和刪除。。。。。如果本篇文章看不懂,請看閱讀上兩篇Dapper系列相關文章Update

專案出現返回資料是引用的,導致前端無法識別

最近在專案中遇到一個問題,就是在我返回的資料中,存在很多條資料中有個部分是相同的,導致返回資料為第一個有,後面的存放的都為引用。 然後找到dispatcher-servlet.xml中的 <mvc:annotation-driven>中的<mvc:message-conve

微信小程式,返回資料給上一介面

我們知道微信官方文件中教我們如何把當前介面的資料傳輸到要跳轉的下一介面中,那麼如何在下一介面返回當前介面時把資料返回來呢? 假設上一介面為A,對應的A.js中有一段這樣的程式碼: 頁面({ data:{ 物件:'', } }) 下一介面為B,對應的B.js中有這個方法:

WebSocket非同步通訊,實時返回資料例項

定義類中的非同步方法 using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net.WebSockets;using System.Text;using System.Thre

spring boot 統一返回資料及全域性異常處理

記錄關於spring boot 統一返回資料及全域性異常處理的操作實現。 一、統一返回資料 1、定義一個超類:BaseResponseVo @Data @NoArgsConstructor public class BaseResponseVo{ protected Integer r