Linq to SQL很好用,可惜只支持Microsoft SQL Server 和Microsoft SQL Server Compact Edition,目前比较成熟的免费解决方法是DBLinq(PS:ALinq超贵,实际上很多类似的小东西都超贵),它可以提供provider实现Linq to MySQL, Linq to SQLite, Linq to Oracle, Linq to PostgreSql... 甚至Linq to SQL Server on Linux.
一、工具:
一、工具:
Dblinq ;
MySQL 5.0以上,编程主机需要安装;
VS2008
MySQL 5.0以上,编程主机需要安装;
VS2008
二、生成DataContext cs文件
DbMetal.exe -provider=MySql -database:your_db -server:your_server -user:root -password:your_pass -namespace:namespace -code:filename.cs -sprocs
//注,名称空间是mysqllinq,-sprocs一定要
DbMetal.exe -provider=MySql -database:your_db -server:your_server -user:root -password:your_pass -namespace:namespace -code:filename.cs -sprocs
//注,名称空间是mysqllinq,-sprocs一定要
出现了以下错误:
DbMetal: Could not load databaseConnectionType type 'MySql.Data.MySqlClient.MySqlConnection, MySql.Data'. Try using the --with-dbconnection=TYPE option.解决方法是添加MySql.Data.dll文件到DBMetal.exe所在目录下
三、将文件DataContext cs放到项目文件中
注意:cs文件放在项目的首层,比如App_Code中,或者内库中
注意:cs文件放在项目的首层,比如App_Code中,或者内库中
using DbLinq.Linq;
using DbLinq.Linq.Mapping;
(如果不是放在App_Code中,在此添加引用)
using DbLinq.Linq.Mapping;
(如果不是放在App_Code中,在此添加引用)
四、在VS 2008中新建类项目DALMySQL,并添加引用
DbLinq.dll;
DbLinq.MySql.dll;
MySql.Data.dll;
//上面三个在DbLinq-0.18\build中可以找到。
System.Data.Linq.dll;
//在C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.Linq.dll
//这是一要引用!!!
五、添加Web_App项目,添加对项目DALMySQL的引用
六、在aspx.cs页面中添加引用:
using MySql.Data;
using MySql.Data.MySqlClient;
using mysqllinq;//DataContext cs文件的名字空间
//省略
- using System;
- using System.Web;
- using System.Web.UI;
- using DbLinq;
- using DbLinq.MySql;
- using MySql.Data;
- using MySql.Data.MySqlClient;
- using System.Linq;
- //主意看我有哪些引用!
- namespace DBLinqTest
- {
- public partial class Default : System.Web.UI.Page
- {
- public virtual void button1Clicked (object sender, EventArgs args)
- {
- string connStr = @"server=localhost;database=DB1;user=AAA;pwd=123456;port=3306;";
- MySqlConnection conn = new MySqlConnection (connStr);
- Db1 db1 = new Db1 (conn);
- var data = from a in db1.Test1
- select a;
- foreach (var d in data) {
- Response.Write (d.ID + " " + d.Name);
- }
- button1.Text = "You clicked me";
- }
- }
- }
没有评论:
发表评论