NET3.5框架提供的Linq可以對多種數據源和對象進行查詢,如數據庫、數據集、XML文檔甚至是數組。而
對數據庫操作,Linq只是默認對SqlServer支持(Linq to Sql),對於其他數據庫不會默認支持,需要自己
進行復雜的配置。由於最近項目需求要用到Linq to MySql,要求Linq操作MySql數據庫!所以配置了很久
才配置成功Linq to MySql環境!具體如下:
一、工具:
DbLinq-0.20.1 下載地址:http://code.google.com/p/dblinq2007/
MySql 5.1.x,編程主機需要安裝MySql
VS2008
二、生成C#語言的.cs文件
首先將下載好的DbLinq-0.20.1解壓到D盤(個人習慣),在開始編譯.cs文件之前要確保DbLinq-0.20.1文件
目錄下有MySql.Data.dll文件,如果你下載的是DbLinq-0.20.1這個版本,那么這里就沒有
MySql.Data.dll這個MySql數據支持文件,你可以到
http://code.google.com/p/dblinq2007/downloads/list里下載DbLinq-0.20.1-src.zip ,解壓這個文件
!這是DbLinq官方提供的鏈接各種數據庫的案例!在lib文件夾下我們可以找到MySql.Data.dll文件,將
這個文件拷貝到DbLinq-0.20.1的目錄下,然后我們可以開始用DbLinq-0.20.1里的DbMetal.exe文件編譯
操作MySql數據庫的.cs文件了
打開DOS命令窗口,進入到DbLinq-0.20.1解壓目錄。然后輸入
DbMetal.exe -provider=MySql -database:ownhome -server:localhost -user:root -password:123456
-namespace:MySqlDAL -code:mysqllinq.cs -sprocs
回車!
如果不出問題的話,將會在DbLinq-0.20.1解壓目錄下生成mysqllinq.cs文件,用來操作MySql數據庫的文
件!
大概解釋一下:命令中的provider,表示需要編譯的驅動,例如SqlServer,FireBird等,databas表示在
MySql數據庫中需要操作的數據庫名稱,我測試用的數據庫名稱叫ownhome,server表示編譯主機,為本機
localhost,user表示訪問MySql數據庫的用戶名,我用的是root,password表示訪問MySql數據庫所用的
密碼,我的是123456。namespace表示生成.cs文件的命名空間,這個按照自己項目需求來定!code表示要
生成的.cs的文件名稱。
三、在VS2008里新建項目
在VS2008里添加網站項目,並且在網站項目中添加一個文件夾叫MySqlSource(個人習慣),將DbLinq-
0.20.1目錄下的DbLinq.dll、DbLinq.MySql.dll、MySql.Data.dll這三個庫文件拷貝到MySqlSource目錄
下。在同一個解決方案下添加一個類庫項目叫MySqlDAL,將剛才生成好的mysqllinq.cs文件拷貝到
MySqlDAL類庫項目中,在網站中添加對MySqlDAL類庫項目的引用!添加對MySql.Data.dll的引用,在
MySqlDAL類庫項目中也添加對DbLinq.dll、DbLinq.MySql.dll、MySql.Data.dll這三個文件的引用,以及
對系統System.Data.Linq的應用!
四、測試
在剛才所建的網站中添加一個Web頁面,從工具箱中拖一個GridView控件到該頁面中,添加頁面命名空間
的引用,
using MySql.Data;
using MySql.Data.MySqlClient;
using MySqlDAL;
在頁面加載事件里寫
if(!IsPostBack)
{
string connStr =
@"server=localhost;database=ownhome;user=root;pwd=123456;port=3306";
MySqlConnection conn = new MySqlConnection(connStr);
OwnHome o = new OwnHome(conn);
var data = from f in o.Users select f;
GridView1.DataSource = data;
GridView1.DataBind();
}
然后保存,運行頁面,如果不出問題,那么GridView將會顯示MySql數據庫中ownhome數據庫的Users表的
數據內容
這個測試時基於Linq to MySql的查詢實現的,向數據庫里添加,修改,刪除數據操作與Linq to Sql的操作基本上一致,所以在這里不再舉
例!