2014年3月16日 星期日

LINQ 與 Access - 使用 Typed DataSet

怎麼在專案裡對 Access 為來源的資料使用 LINQ 操作呢?

Entity Framework 與 LINQ to SQL 不支援 Access,Telerik Data Access (之前叫做 Open Access ORM) 也不支援,如果不尋求 Third Party 支援的話,其實還是可以使用強型別 DataSet (資料集),強型別 DataSet 就可以直接將 Access 裡的 Table 拉進去使用,不過我很少使用 Typed DataSet,所以我還是希望可以有其他的方式來解決,不過這一篇就當作練習,練習怎麼使用 Typed DataSet。

 


首先我從 SQL Server 裡將 Northwind 的 Customers 匯出到 Access mdb 檔案裡,

image

接著建立一個 Console (主控台應用程式) 專案,然後將剛才所匯出 Access mdb 檔案加入到專案中,

image

這邊先使用 Typed DataSet 的方式來操作一次,

image

例如我要取得全部的 Customer 資料,我可以使用下面的做法,

image

或是下面的方式,

image

這兩種操作方式都可以讓我取得在 Access 裡面的 Customer 資料,

image

 

然後使用 LINQ 對 Customer 資料做篩選,

image

image

 

做 Distinct 操作

image

image

 

做 Group 操作

image

image

 

其實使用 Typed DataSet 存取 Access 以及使用 LINQ 操作並不是新鮮事,就在於開發者要不要這樣使用,LINQ 已經 Release 這麼多年,我還是看到有很多的開發者對於 LINQ 操作還是相當不熟悉,甚至有些開發多年的資深工程師對於 LINQ 相當排斥。

我是盡量避免在程式碼裡直接使用到 SQL Command,尤其是 Access 這類型的檔案,因為查詢語法與 T-SQL 還是有差別的,如果我程式裡都是直接使用 Command 對資料做存取,一旦資料的儲存媒體要做更換,那麼將會有很多 Command 要跟著做修改,這時候就是麻煩的開始。

這一篇就到此打住,本來就不打算對 Typed DataSet 做長篇大論或是深入研究,只是為了以後幾篇文章的前導文。

 

延伸閱讀

MSDN - DataSet、DataTable 及 DataView

MSDN 範例 - 101 LINQ Samples 於 C#

 

以上

沒有留言:

張貼留言

提醒

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