一个好老好老的老程序员了。
全部博文(915)
分类: C#/.net
2013-09-29 22:42:03
NET3.5框架提供的Linq可以对多种数据源和对象进行查询,如数据库、数据集、XML文档甚至是数组。而
对数据库操作,Linq只是默认对SqlServer支持(Linq to Sql),对于其他数据库不会默认支持,需要自己
进行复杂的配置。由于最近项目需求要用到Linq to MySql,要求Linq操作MySql数据库!所以配置了很久
才配置成功Linq to MySql环境!具体如下:
一、工具:
DbLinq-0.20.1 下载地址:
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数据支持文件,你可以到
里下载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的操作基本上一致,所以在这里不再举
例!