SmartPersistenceLayer 3.1 正式发布
经过一段时间的努力,SmartPersistenceLayer终于完成了修改与测试,在这期间要特别感谢一些网友的意见与支持,特别要感谢Asilas的最后测试。
SPL3.1的发布分为:
SPL3.1的DLL发布:SPL本身的发布型式为DLL,只要下载DLL并引用即可。对于已经有SPL环境的朋友,升级也只需要把SPL3.1的DLL进行覆盖即可。下载SPL3.1DLL
注:SPL升级到3.1.0.5了,添加了对事务的“实时提交”功能,下载请参考:
2.添加了RetrieveCriteria 的指定显示字段功能:
使用AddSelect(string entityAttributeName)或
AddSelect(string entityAttributeName,string AliasName)就可以指定要显示的字段值了。一旦使用一个或一个以上,就会按指定的显示,如果一个也不指定,默认会显示出所有字段!
3.增加了Oracle的“TOP”功能,
对于Oracle数据库,SPL将生成rownum<=N的语句获取前N条记录(RetrieveCriteria 和Query都加上了).
4.实现了时间戳功能
只要定义一列为timestamp="true",数据类型为String,如:
在Delete时也会进行时间戳的判断,成功与不成功也通过"影响条数"来判断。
因为在Update与Delete时,就算不成功,数据库也不会抛出异常,只是影响条数为0,所以我们通过影响条数来进行判断即可。
在UpdateCriteria时也进行了时间戳值的更新,但问题是对于批量更新,无法进行每一条的时间戳比较。关于时间戳的理念与实现机制请参考我的文章:SPL3.1讲解(8)--- 并发处理篇
5.事务中也加入了timestamp的支持
在Transaction中添中了IsForceCommit属性: flase:不强行Commit,是指在实体Save()或是实体Delete()时,返回false就回滚整个事务,这用于并发性处理 true:强行Commit,是指忽略实体Save()与Delete()返回的false状态,因为有时这在业务上本身就是允许的。此默认值为false,也就是要求进行并发控制的,也可以手动设置为true,强行进行Commit 我们可以通过
判断result来判断是否执行成功了,如果为false,则说在事务处理中遇到了并发错误,可以进行提醒重新提交 而且在事务中也进行了保存到内存的控制,在事务的并发生成错误时,那些相内的保存到内存的数据将被清空, 这样可以确保内存不会出现已经被Roolback的数据。
6.添加了对实体的Clone功能
要把实体类标识为可序列化:如:
然后使用实体对象的DeepClone()方法就可以了:
SuppliersEntity supplier2=(SuppliersEntity)supplier.DeepClone();
这要求对实体类具有"[Serializable]",可以通过这次一起新发布的SmartRobot for SPL3.1代码生成工具进行生成。
7.对UpdateCriteria 的 AddAttributeForUpdate方法进行了加强
原先只能进行string字段的更新:
现在允许进行强类型更新:
8.多帐套的支持
SPL3.1开始,对多帐套进行了修复与扩展,有关“多帐套”功能的详细介绍请看:SPL3.1讲解(9)---多帐套处理篇
9.添加了执行无返回执行Sql语句
Query添加了
的方法用于执行不返回DataTable的SQL语句
其他更多SPL资料请参看SPL专栏:http://www.cnblogs.com/tintown/category/12787.html
受权说明:此SPL发布形式为DLL,免费使用,DLL中没有限制信息。
由于是免费的,不对SPL中可能存在的BUG所造成的项目损失负责。
接受BUG处理,但也不为此承诺必须处理。
SPL不公开源代码。
修改备注:
在4月12号之前下载的朋友,请重新下载一下,在事务处理的地方,修改了一下判断条件。
目前系统已升级到SPL3.2.0.1,请访问:http://tintown.cnblogs.com/archive/2005/11/08/271629.html