網頁

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 的時就花錢買來用了。

      刪除