SPL从上次的3.1.0.5开始,经过了一段时间,积累了一些修改并进行了MySQL数据库的支持,现在发布SPL版本为3.2.0.4,Dll下载地址:这里 。只需要在项目中,把原来的Dll覆盖即可,如果还没下载过SPL早期版本的朋友,请先浏览:http://tintown.cnblogs.com/archive/2005/04/11/135582.html 。
本次SPL自上次发布的3.1.0.5以后进行的更新有:
1、支持MS SQL SERVER中的Bit型数据类型
映射到ClassMap中的类型为boolean,如:
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
对应的实体类类型为bool型,如:
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a93e36049cbc0d1d91385b43fd3f8b27.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37b86694ed4211d5a363c06d7b8015dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/419bc414f84c7309c5bc1d4a29e3a6be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/59ff2a9ff9b7117ed3d8680373d91314.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/58ac5102266a545de63b286dea52771e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/419bc414f84c7309c5bc1d4a29e3a6be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/601284278e82c28316495265882742ca.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/419bc414f84c7309c5bc1d4a29e3a6be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/59ff2a9ff9b7117ed3d8680373d91314.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/58ac5102266a545de63b286dea52771e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/419bc414f84c7309c5bc1d4a29e3a6be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/601284278e82c28316495265882742ca.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8f82f208a2f943c67392e9549df303c7.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
在查询时可以通过Condition进行比较判断了:
Codition c=....
c.AddEqualTo("IsOver",false);//这会最终生成 IsOver='0'的查询条件
2、提供了对数据源的提供者类型的判断,这将方便区分不同的数据库提供者手动组装不同的SQL语句
用Setting.Instance().GetDatabaseVendor(dbName)根据dbName数据源取得数据源提供者,然后与DatabaseVendor枚举型比较
如Access的日期比较与Sql Server的不一致:一个采用#号,一个采用'号
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a93e36049cbc0d1d91385b43fd3f8b27.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37b86694ed4211d5a363c06d7b8015dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/419bc414f84c7309c5bc1d4a29e3a6be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/419bc414f84c7309c5bc1d4a29e3a6be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8f82f208a2f943c67392e9549df303c7.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a93e36049cbc0d1d91385b43fd3f8b27.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37b86694ed4211d5a363c06d7b8015dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/419bc414f84c7309c5bc1d4a29e3a6be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/419bc414f84c7309c5bc1d4a29e3a6be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8f82f208a2f943c67392e9549df303c7.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
这个功能将为系统对多种数据库的支持最佳的灵活性,虽然SPL本身的“实体”与“标准”都可以区分不同的数据源提供者,但在需要手写SQL的地方,也需要根据不同的数据源提供者提供不同的语句执行
3、修订了对所有保留字的兼容性
目前对所有的SPL中的操作,都加了定界符,ORACLE采用“"”号,MS的采用“[]”号,MySql的采用“`”号,所有测试都通过了
4、在Condition里添加了对Null值的查询功能
此方式只针对AddEqualTo()和AddNotEqualTo()有效:
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
5、增加了对MySql数据库的支持
SPL对MySql的访问连接采用的是MySql提供的专用.NET connector,此驱动应该说是目前.NET连接MySql的最佳选择,在使用SPL访问MySql时,只需要安装一下此驱动即可,下载与介绍请看官方地址:
http://dev.mysql.com/downloads/connector/net/1.0.html
使用时只需要配置DatabaseMap时类型设为“MySql”即可,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3af4958f392591444ed6318be38ed6dd.gif)
只需这里配置后,SPL在具体应用中与其他的完全一样,测试情况:
实体测试--->通过
RetrieveCriteira、UpdateCriteria、DeleteCriteria测试--->通过
Transaction测试--->通过
自动增长主键测试--->通过
TOP功能测试--->通过
6、对DateTime的Null值进行了处理 (3.2.0.1开始支持)
如果要对DateTime类型的字段赋于Null值,只需要使用DateTime.MinValue即可:
aEntity.CreateDate=DateTime.MinValue;
在SPL内部会判断如果DateTime.MinValue的话,自动保存到数据库为System.DBNull.Value,这就解决了不能给 DateTime类型直接赋于System.DBNull.Value的问题。
7、修订了UpdateCriteria对属性名与字段名不一致时导致的错误(3.2.0.2开始修订)
原来在UpdateCriteira时没有对属性进行转化为字段名,导致在属性名与字段名不一致的情况下会找不到字段。
(非常感谢iamsunrise提供的建议,请下载了SPL3.2的朋友重新下载一下)
(感谢子扬报出的BUG)
8、本3.2.0.4已经修复了DataBaseType的MySql类型了。