.Net下使用BLToolkit ORM访问 MySql 的注意事项
2011-01-11 10:46
751 查看
.Net 的 ORM框架 在MySql上试过几个. DBLinq, 这个类似于Linq to Sql, BUG太多了; Linq to Entity, 这个也试了,很多特性不支持,写起来很不方便。
论到兼容性、稳定性,最后还是觉得BLToolkit最优.
BLToolkit提供了对数据库访问的多层次封装。可以用ADO.Net的封装,可以用Entity ORM, 也可以用Linq, 使用起来非常方便。
而且它支持各种各样的数据库
准备好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里面进行配置了
这里需要注意,如果你是直接使用 编译好的BLToolkit dll, 那么上面配置中的 assembly redirection那节很可能是需要的,因为你机器上的MySql.Data.dll版本可能和BLToolkit要求的版本不一致。 你也可以自己编译BLToolkit来避免这个问题。
我从它的SVN上获取到最新的版本,用VS2010编译通过了,这样简单些。
现在就配置完了。
---------
关于SQL语句中变量的问题
MySql有一种老式的变量命名风格 ?XXX 和 新式的变量风格 @XXXX,而BLToolkit.Data.DataProvider.MySqlDataProvider中却是默认使用老式的变量风格
如果你想使用 新式的变量,像下面一样
那么你就需要修改 MySqlDataProvider的默认配置, 将它的构造函数直接改成
论到兼容性、稳定性,最后还是觉得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里面进行配置了
<configuration> <configSections> <section name="bltoolkit" type="BLToolkit.Configuration.BLToolkitSection, BLToolkit.4"/> </configSections> <bltoolkit> <dataProviders> <add type="BLToolkit.Data.DataProvider.MySqlDataProvider, BLToolkit.4" /> </dataProviders> </bltoolkit> <connectionStrings> <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"/> </connectionStrings> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <!-- Redirect MySQL Connector --> <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" /> <bindingRedirect oldVersion="5.0.0.0-6.3.0.0" newVersion="6.3.6.0"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
这里需要注意,如果你是直接使用 编译好的BLToolkit dll, 那么上面配置中的 assembly redirection那节很可能是需要的,因为你机器上的MySql.Data.dll版本可能和BLToolkit要求的版本不一致。 你也可以自己编译BLToolkit来避免这个问题。
我从它的SVN上获取到最新的版本,用VS2010编译通过了,这样简单些。
现在就配置完了。
---------
关于SQL语句中变量的问题
MySql有一种老式的变量命名风格 ?XXX 和 新式的变量风格 @XXXX,而BLToolkit.Data.DataProvider.MySqlDataProvider中却是默认使用老式的变量风格
如果你想使用 新式的变量,像下面一样
public abstract class MachineAccessor : DataAccessor<MachineTable> { [ScalarSource(ScalarSourceType.AffectedRows)] [SqlQuery(@"UPDATE machine SET LastAccessTime = NOW(), LastAccessIP = @lastAccessIP, FirstAccessTime = IFNULL(FirstAccessTime, NOW()) WHERE SerialNumber = @serialNumber")] public abstract int UpdateLastAccess(string serialNumber, string lastAccessIP); }
那么你就需要修改 MySqlDataProvider的默认配置, 将它的构造函数直接改成
static MySqlDataProvider() { ConfigureNewStyle(); }
相关文章推荐
- 在WEB程序中使用.NET Remoting的IpcChannel时注意事项(关于“拒绝访问”问题的解决)
- LINUX下PHP使用PDO访问MYSQL的连接设置注意事项
- MySQL中MAX函数与Group By一起使用的注意事项
- MySQL缓存使用注意事项
- MySQL学习笔记--触发器的创建与删除及使用注意事项
- 使用mysql索引技巧及注意事项
- MySQL中MAX函数与Group By一起使用的注意事项
- MySQL索引类型总结和使用技巧以及注意事项
- 服务端开发指南与最佳实战 | 数据存储技术 | MySQL(04) 索引使用的注意事项
- novnc使用配置文件访问注意事项
- 关于Aspose.NET使用的几点注意事项
- MySQL索引类型总结和使用技巧以及注意事项
- MySQL使用JDBC Load Data InFile导入数据注意事项
- MySQL索引类型总结和使用技巧以及注意事项
- MySQL索引类型总结和使用技巧以及注意事项
- Navicat for MySQL 使用手册及注意事项
- [MySQL]索引类型总结和使用技巧以及注意事项
- .Net访问Oracle数据库注意事项
- mysql 使用注意事项
- DjangoORM使用mysql注意