Linq核心的組成部分有LINQtoSQL,LINQtoDataSet,LINQtoEntitIEs和LINQtoXML,根據Linq對於其他的集成很快會由微軟或第三方實現,而改技術對於Access數據庫的支持並沒有像SQLServer那麼友好,今天嘗試用Linq查詢Access數據文件時碰到了不少麻煩,在網上搜索後發現很多朋友都碰到了相同的問題,經過反復的嘗試,終於初步完成了Access的查詢。
下面是實現步驟:
1.預備:用Access2007建立一個users.mdb文件,裡面定義一個users表包括了以下三個字段——ID(int),Name(文本),PassWord(文本)。
2.新建一個控制台程序後,導入改數據連接,VS2008會自動的生成與數據表對應的強類型數據集並且完成相應的配置文件,其中要害的配置代碼如下:
......
<connectionStrings>
<addconnectionString="Provider=Microsoft.ACE.OLEDB.12.0;DataSource=|DataDirectory|users.accdb;PersistSecurityInfo=True"
provider/>
</connectionStrings>
......
3.實現代碼
//定義相關的DataSet和TableAdapter
usersDataSetuDS=newusersDataSet();
usersTableAdapteruTA=newusersTableAdapter();
usersDataSet.usersDataTableuTable=newusersDataSet.usersDataTable();uTA.ClearBeforeFill=true;
uTA.Fill(uTable);
......
//通過LinQ查詢users表中用戶名為需要查詢的信息,這裡AsEnumerable()是必須的
//而u.FIEld<string>("Name")=="......"的意思是判定是否為需要查詢的類型為string的Name字段
varusers=(fromuinuTable.AsEnumerable()
whereu.FIEld<string>("Name")=="......"
selectu).First();
......
//打印查詢到的PassWord
Console.WriteLine("Password:{0}",users.FIEld<string>("PassWord"));
總結:其實這裡的Linq查詢Access主要還是通過LINQtoDataSet實現和完成的,但是從實現方式上又是按照了ORM的模式來執行的,不得不說的是Linq為數據的查詢提供了極大的便利,同時也簡化了數據的操作,開始明白微軟為解決Data!=Object的意圖了