2014年3月6日 星期四

AutoMapper - 使用 Queryable Extensions

AutoMapper 對於有實作 IQueryable<T>(例如:使用 Entity Framework, NHiberbate 等)提供了另一個資料對映的方式,可以簡化資料對映的處理。

 


這次要做的與前面兩篇的內容不同,另外建立 CustomerOrderStatistics 類別,類別裡有三個屬性,有 CustomerID 與 Customer 以及 OrderStatistics,另外一個類別為 OrderStatistics,其屬性分別為 OrderCount , TotalQuantity,用來放置顧客訂單數量以及所有訂單的產品訂購總數量,

image

使用 AutoMapper 資料對映的設定方式如下圖,不過並不是只處理一筆資料而是要處理所取出的全部顧客資料,:

image

執行結果

image_thumb[31]

 

使用 Queryable Extensions

接著我們改為使用 AutoMapper 的 Queryable Extensions 的 Project().To<TResult>() 方法,使用前需要引用 AutoMapper.QueryableExtensions 命名空間,

image_thumb[33]

修改的程式內容:

image

執行結果:

image

 

這邊要特別說明,Queryable Extensions 並不支援前一篇文章「AutoMapper - Complex Type 使用 Custom value resolvers 設定屬性轉換」裡所使用的「ResolveUsing」,所以如果資料對映的設定改為以下的方式,

image

那麼在執行的時候就會出現 Exception,

image


 

AutoMapper Wiki  - Queryable Extensions

image

所以使用 Queryable Extensions 功能會是在簡單的資料對映處理上,如果是會有複雜處理的時候就不要使用。

 

以上

2 則留言:

  1. 不好意思
    想請教一個非本文章的專業問題
    在文章中,你在偵錯模式下觀察變數的值的那個視窗
    似乎跟原本 VS 內建的長的不太一樣
    是否使用了哪一個擴充套件?
    看起來不錯 能否介紹一下呢 謝謝!

    回覆刪除
    回覆
    1. OzCode
      http://www.oz-code.com/
      現在是 Beta 所以可以免費使用,
      以前叫做 BugAid,好工具,所以還是 BugAud 的時就花錢買來用了。

      刪除

提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。