一、準備工作,我們需要安裝一些東西,并拷貝一些東西。
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 Files/Reference Assemblies/Microsoft/Framework/v3.5
拷貝以下幾個Dll到LinqDlls文件夾
-----------------------------------------------------
System.Core.dll
System.Data.DataSetExtensions.dll
System.Data.Linq.dll
System.Runtime.Serialization.dll
System.xml.Linq.dll
-----------------------------------------------------
6.進入MySQL/MySQL Connector Net 6.3.2/Assemblies/v2.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(dataSet.Customers); orderAdapter.Fill(dataSet.Orders); var 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(order.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。以后再說吧。
新聞熱點
疑難解答