WEB开发网
开发学院WEB开发ASP.NET .NET2.0下使用LinqMySQL 阅读

.NET2.0下使用LinqMySQL

 2010-08-16 17:42:54 来源:WEB开发网   
核心提示:一、准备工作,我们需要安装一些东西,.NET2.0下使用LinqMySQL,并拷贝一些东西,0.打开VS2008或VS2010,我们成功在.NET2.0下使用LinqSQL和LinqDataSet来使用MySql了,但是 我并没有成功在.NET2.0下成功使用LinqEntity来使用MySql,新建工程控制台项目Li

一、准备工作,我们需要安装一些东西,并拷贝一些东西。

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。以后再说吧。

Tags:NET 使用 LinqMySQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接