一、準備工作,我們需要安裝一些東西,並拷貝一些東西。
0.開啟VS2008或VS2010,新建工程控制台專案LinqMySQL,目標程式集為.NET 3.5
1.下載並一路NEXT安裝MySQL
2.下載並一路NEXT安裝MySQLWorkBench 打開,並建立test資料庫,Customers和Orders兩張表
-------------------------------------------------- ---
create table Customers
(
CustomerID varchar(50) not null PRimary key,
ContractName varchar(50) not null,
Phone varchar(50) not null,
City varchar(50) not null,
Country varchar(50) not null
)
create table Orders
(
OrderID int not null primary key,
OrderDate DateTime,
CustomerId varchar(50) not null,
foreign key(CustomerID) references Customers(CustomerID)
)
-------------------------------------------------- ---
3.下載並一路NEXT安裝MySQL .NET Connector 6.3.2
4.下載並解壓縮DbLinq,並設定路徑到系統環境變量
5.在LinqMySql目錄下新建LinqDlls資料夾
開啟資料夾C:Program FilesReference AssembliesMicrosoftFrameworkv3.5
拷貝以下幾個Dll到LinqDlls資料夾
-------------------------------------------------- ---
System.Core.dll
System.Data.DataSetExtensions.dll
System.Data.Linq.dll
System.Runtime.Serialization.dll
System.xml.Linq.dll
-------------------------------------------------- ---
6.進入MySQLMySQL Connector Net 6.3.2Assembliesv2.0目錄下拷貝
-------------------------------------------------- ---
MySql.Data.dll
-------------------------------------------------- ---
到DbLinq的安裝目錄
二、開始工作了,我們一步一步來。
1.開啟CMD,CD到DbLinq目錄使用DbMetal.exe建立MySQL的DataContext,指令如下:
-------------------------------------------------- ---
DbMetal.exe
-provider=MySql
-database:MyDatebase
-server:localhost
-user:mysqluser
-passWord:yourpassword
-namespace:LinqMySql
-code:TestDataContext.cs
-sprocs
-------------------------------------------------- ---
將產生的TestDataContext.cs剪下到LinqMySql項目根目錄,並加入LinqMySql項目
2.在Main函數裡面加入如下程式碼
-------------------------------------------------- ---
string connStr = @"server=localhost;database=test;user=mysqluser;pwd=yourpassword;";
using (var conn = new MySqlConnection(connStr)){ var t = new Test(conn); var data = from customer in t.Customers select customer.ContractName; foreach (var d in data) { Console.WriteLine(d); }}------------------------------------------------ -----3.編譯並運行,成功。
4.接下來我們要將.NET 3.5退化到.NET2.0,首先將工程的目標程序集改為.NET2.0,
然後會發現Reference裡面有幾個dll變成感嘆號,將他們都刪除,然後將LinqDlls資料夾下的
幾個Dll都加入到Referece,然後分別將這幾個Dll屬性裡面的copy local設定為True,將Specify Version設定為False
5.再次編譯,則成功!
三、其他故事呢?嘗試在.NET2.0下使用LinqDataSet,並且資料庫使用MySQL
1.重啟VS,使得剛剛加入到MySQL連接器被VS載入。
2.開啟Server Explorer,右鍵Data Connection,新增鏈接,改變資料連接器
選擇MySql Connector,一路NEXT輸入必要的伺服器位址,使用者名,密碼,並測試連線是否成功。
3.將LinqMySql目標程式集變更為.NET3.5,右鍵工程新增強型別DataSet。
將Server Explorer裡的Mysql test資料庫下的Customers和Orders表加入到DataSet裡。
4.在Main函數裡寫測試程式碼
-------------------------------------------------- ---
using (var dataSet = new DataSet1()){ var customerAdapter = new DataSet1TableAdapters.CustomersTableAdapter(); var orderAdapter = new DataSet1TableAdapters.OrdersTableAdapter(); customerAdapter.Fill DataSetdataSet.Fill query = from order in dataSet.Orders where order.OrderDate.Date > new DateTime(2010, 8, 1) select new { order.OrderID, order.CustomerID }; foreach (var order in query) { Console.WriteLine(. CustomerID); }}--------------------------------------------- --------5.編譯並運行,成功!
6.等等,現在還只是.NET3.5的,要如何改變到.NET2.0?
試著直接將目標組件改為.NET2.0,編譯,失敗!
7.TMD查看了下DataSet1.designer.cs,發現在.NET3.5下的如下程式碼
-------------------------------------------------- ---public partial class customersDataTable : global::System.Data.TypedTableBase<customersRow>------------------------------- ---------------------- 現在變成了
-------------------------------------------------- ---
public partial class customersDataTable : global::System.Data.DataTable, global::System.Collections.IEnumerable---------------------------- -------------------------8.所以呢?怎麼辦?重新將目標組件設定為.NET3.5,然後到LinqMySql目錄下將
-------------------------------------------------- ---
DataSet1.Designer.cs
DataSet1.xsc
DataSet1.xsd
DataSet1.xss
-------------------------------------------------- ----
幾個檔案拷貝出來做一個備份,然後將目標組件再次設定為.NET2.0,然後。 。
然後將剛才備份的以上幾個檔案重新拷貝回工程目錄,再次編譯運行,成功!
9.至此,我們成功在.NET2.0下使用LinqSQL和LinqDataSet來使用MySql了,但是
我並沒有成功在.NET2.0下成功使用LinqEntity來使用MySql。以後再說吧。