Linq to MySql

 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. }  
posted @ 2015-02-08 11:40  往日的雨幽  阅读(2586)  评论(0)    收藏  举报