转载 

.Net下使用BLToolkit ORM访问 MySql 的注意事项

分类:    810人阅读    IT小君  2015-02-10 23:35

.Net 的 ORM框架 在MySql上试过几个. DBLinq, 这个类似于Linq to Sql, BUG太多了; Linq to Entity, 这个也试了,很多特性不支持,写起来很不方便。

 

论到兼容性、稳定性,最后还是觉得BLToolkit最优.

 

BLToolkit提供了对数据库访问的多层次封装。可以用ADO.Net的封装,可以用Entity ORM, 也可以用Linq, 使用起来非常方便。

 

而且它支持各种各样的数据库

 

Class Provider Name Namespace Vendor
AccessDataProvider Access System.Data.OleDb Microsoft
OdbcDataProvider Odbc System.Data.Odbc Microsoft
OleDbDataProvider OleDb System.Data.OleDb Microsoft
OracleDataProvider Oracle System.Data.OracleClient Microsoft (deprecated by Microsoft in FW 4.0)
SqlDataProvider Sql System.Data.SqlClient Microsoft
DB2DataProvider DB2 IBM.Data.DB2 IBM
FdpDataProvider Fdp FirebirdSql.Data.FirebirdClient Firebird
InformixDataProvider Informix IBM.Data.Informix IBM
MySqlDataProvider MySql MySql.Data.MySqlClient Sun Microsystems
OdpDataProvider ODP Oracle.DataAccess.Client Oracle
SqlCeDataProvider SqlCe System.Data.SqlServerCe Microsoft
SQLiteDataProvider SQLite System.Data.SQLite SQLite.org
SybaseAdoDataProvider SybaseAdo System.Data.OleDb Support for DataDirect Sybase ADO Provider
SybaseDataProvider Sybase ASE Sybase.Data.AseClient

Sybase

 

 


 

准备好Mysql, 安装好 Mysql connector , http://www.mysql.com/downloads/connector/net/

现在的最新版本是 6.3.6, 最好不要使用 Windows 32bit那个版本,Windows 2008服务器可是64位的哦。

 

安装完 MySql Connector后, 你可以将MySql.Data.dll拷贝到你的网站目录下,或者干脆直接加入到GAC里面去。

 


然后下载BLToolkit Lib, http://bltoolkit.net , 你可以选择下载源代码 或者直接使用它编译好的dll

 

引入工程后,就可以在*.config里面进行配置了

 

  1. <configuration>  
  2.   <configSections>  
  3.     <section name="bltoolkit" type="BLToolkit.Configuration.BLToolkitSection, BLToolkit.4"/>  
  4.   </configSections>  
  5.   <bltoolkit>  
  6.     <dataProviders>  
  7.       <add type="BLToolkit.Data.DataProvider.MySqlDataProvider, BLToolkit.4" />  
  8.     </dataProviders>  
  9.   </bltoolkit>  
  10.   <connectionStrings>  
  11.     <add name="Default" connectionString="Server=127.0.0.1;Port=3306;Database=vms;Uid=root;Pwd=123456;Charset=utf8;Allow User Variables=True;Allow Zero Datetime=false" providerName="MySql.Data.MySqlClient"/>  
  12.   </connectionStrings>  
  13.   <runtime>  
  14.     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
  15.       <dependentAssembly>  
  16.         <!-- Redirect MySQL Connector -->  
  17.         <assemblyIdentity name="MySql.Data"  
  18.           publicKeyToken="c5687fc88969c44d"  
  19.           culture="neutral" />  
  20.         <bindingRedirect oldVersion="5.0.0.0-6.3.0.0"  
  21.           newVersion="6.3.6.0"/>  
  22.       </dependentAssembly>  
  23.     </assemblyBinding>  
  24.   </runtime>  
  25. </configuration>  

 

这里需要注意,如果你是直接使用 编译好的BLToolkit dll, 那么上面配置中的 assembly redirection那节很可能是需要的,因为你机器上的MySql.Data.dll版本可能和BLToolkit要求的版本不一致。 你也可以自己编译BLToolkit来避免这个问题。

我从它的SVN上获取到最新的版本,用VS2010编译通过了,这样简单些。

 

现在就配置完了。

 

---------

关于SQL语句中变量的问题

 

MySql有一种老式的变量命名风格 ?XXX 和 新式的变量风格 @XXXX,而BLToolkit.Data.DataProvider.MySqlDataProvider中却是默认使用老式的变量风格

 

如果你想使用 新式的变量,像下面一样

 

  1. public abstract class MachineAccessor : DataAccessor<MachineTable>  
  2.     {  
  3.         [ScalarSource(ScalarSourceType.AffectedRows)]  
  4.         [SqlQuery(@"UPDATE machine SET LastAccessTime = NOW(), LastAccessIP = @lastAccessIP, FirstAccessTime = IFNULL(FirstAccessTime, NOW()) WHERE SerialNumber = @serialNumber")]  
  5.         public abstract int UpdateLastAccess(string serialNumber, string lastAccessIP);  
  6.     }  

那么你就需要修改 MySqlDataProvider的默认配置, 将它的构造函数直接改成

  1. static MySqlDataProvider()  
  2. {  
  3.             ConfigureNewStyle();  
  4. }  
点击广告,支持我们为你提供更好的服务

js+css3抽奖转盘旋转点餐代码

响应式时尚单品在线商城网站模板

css鼠标跟随文字模糊特效

css+js实现的颜色渐变数字时钟动画特效

jQuery右端悬浮带返回顶部特效

html5 svg夜空中星星流星动画场景特效

中小型创意设计服务公司网站模板

HTML5数字产品服务公司网站模板

小众时尚单品在线电子商务网站模板

响应式太阳能能源公司网站模板

HTML5 Canvas竖直流动线条背景动画特效

html5 canvas彩色碎片组合球形旋转动画特效

html5 canvas进度条圆环图表统计动画特效

canvas炫酷鼠标移动文字粒子特效

HTML5现代家居装潢公司网站模板

现代时尚家具公司网站模板

有机水果蔬菜HTML5网站模板

html5图标下拉搜索框自动匹配代码

响应式咖啡饮品宣传网站模板

网页设计开发公司网站模板

点击广告,支持我们为你提供更好的服务
 工具推荐 更多»
点击广告,支持我们为你提供更好的服务