前面的文章介紹了 Linq To Access 這個套件,但並非使用它所提供的 T4 Templates 來建立 Data Context,而這一篇文章裡將會以 ASP.NET MVC 專案裡如何使用 LinqToDB.Templates 來做說明。
前面的文章介紹了 Linq To Access 這個套件,但並非使用它所提供的 T4 Templates 來建立 Data Context,而這一篇文章裡將會以 ASP.NET MVC 專案裡如何使用 LinqToDB.Templates 來做說明。
習慣使用 Entity Framework 之後,幾乎專案的開發都不會使用其他的資料存取方式,而之前的文章說過 Entity Framework 並不支援 Access,所以才會使用 Typed DataSet 來存取 Access,但還是覺得一定有什麼方式是近似於我平常習慣的開發方式,後來我找到了 LINQ to Access 這個套件,而且使用起來還算簡單,畢竟使用 Access 作為資料儲存媒體的專案並不會有太複雜的操作,可以做為解決方案,而且其底層 LINQ to DB 還有實做各種資料庫的 Data Provider,大家有時間的話可以玩玩看。
P.S.
LINQ to Access 與 LINQ to SQL 或是 ADO.NET Entity Framework 並沒有直接關係,所以不要以為 LINQ to Access 是 LINQ to SQL 或 EntityFramework 的擴充,與 Oracle ODAC for EntityFramework 之於 EF 是不一樣。
我一直都推薦 LINQPad 做為練習或是開發測試 LINQ 的工具,因為不必開啟 Visual Studio,也不必在 Visual Studio 寫完 LINQ Expression 之後按下「F5」開始偵錯後才能看到剛才寫的 LINQ Expression 是否正確或是是否取得預期結果。
但是我們可以在 LINQPad 裡對資料來源為 Access 做 LINQ 操作嗎?
怎麼在專案裡對 Access 為來源的資料使用 LINQ 操作呢?
Entity Framework 與 LINQ to SQL 不支援 Access,Telerik Data Access (之前叫做 Open Access ORM) 也不支援,如果不尋求 Third Party 支援的話,其實還是可以使用強型別 DataSet (資料集),強型別 DataSet 就可以直接將 Access 裡的 Table 拉進去使用,不過我很少使用 Typed DataSet,所以我還是希望可以有其他的方式來解決,不過這一篇就當作練習,練習怎麼使用 Typed DataSet。
AutoMapper 對於有實作 IQueryable<T>(例如:使用 Entity Framework, NHiberbate 等)提供了另一個資料對映的方式,可以簡化資料對映的處理。
在上一篇文章「AutoMapper - Complex Type 的資料對映」裡說明了幾種對於 Complex Type 的資料對映方式,其實還有一種方式,AutoMapper 提供了一種「Custom value resolvers(自定義值解析器)」,讓我們可以另外定義資料解析以及轉換的方式,以彈性的方式進行目標類別物件的資料對映。
這篇文章將會以前篇文章的程式來做示範。
有時候建立類別並不會單純只使用一般的資料型別來定義屬性,很多時候也是會使用我們所定義的類別作為屬性的型別,最常見的就是在 ASP.NET MVC 所使用的 ViewModel 或是 DTO 資料傳輸物件類別,要如何處理這樣的資料對映呢?
接下來將會說明不同的資料對映使用方式。