2012年12月14日星期五

DBLinq (MySQL exactly) Linq To MySql


DBLinq (MySQL exactly) Linq To MySql

分类: MySql 238人阅读 评论(0) 收藏 举报
 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
二、生成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: 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中,或者内库中
using DbLinq.Linq;
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文件的名字空间
//省略
[csharp] view plaincopy
  1. using System;  
  2. using System.Web;  
  3. using System.Web.UI;  
  4. using DbLinq;  
  5. using DbLinq.MySql;  
  6. using MySql.Data;  
  7. using MySql.Data.MySqlClient;  
  8. using System.Linq;  
  9.   
  10. //主意看我有哪些引用!  
  11.   
  12.   
  13. namespace DBLinqTest  
  14. {  
  15.   
  16.   
  17.     public partial class Default : System.Web.UI.Page  
  18.     {  
  19.   
  20.         public virtual void button1Clicked (object sender, EventArgs args)  
  21.         {  
  22.             string connStr = @"server=localhost;database=DB1;user=AAA;pwd=123456;port=3306;";  
  23.              
  24.             MySqlConnection conn = new MySqlConnection (connStr);  
  25.             Db1 db1 = new Db1 (conn);  
  26.             var data = from a in db1.Test1  
  27.                 select a;  
  28.             foreach (var d in data) {  
  29.                 Response.Write (d.ID + " " + d.Name);  
  30.             }  
  31.             button1.Text = "You clicked me";  
  32.         }  
  33.     }  
  34. }  

没有评论:

发表评论