SmartPersistenceLayer 3.1 正式发布

转载 2005年04月28日 17:01:00
   经过一段时间的努力,SmartPersistenceLayer终于完成了修改与测试,在这期间要特别感谢一些网友的意见与支持,特别要感谢Asilas的最后测试。
 SPL3.1的发布分为:
   SPL3.1的DLL发布:SPL本身的发布型式为DLL,只要下载DLL并引用即可。对于已经有SPL环境的朋友,升级也只需要把SPL3.1的DLL进行覆盖即可。下载SPL3.1DLL
  SPL3.1的Demo源码发布为了让大家更好的上手,SPL3.1在发布时,同时发布Demo源码安装包,里面介绍了一些SPL的使用和相应的源代码,适合刚接触SPL的朋友,这次采用安装包的方式后,不需要安装NetAdvantage了,安装后即可进行使用。下载SPL3.1Demo源码   下载地址2    (在安装前先看一下“安装说明”)
  注:安装此Demo时会自动生成ig_Common的NetAdvantage客户端项目,所以如果机器上已经有NetAdvantage,那么在卸载此Demo时也会卸载ig_common,这样会导致NetAdvantage不可用的。可以提前给ig_common做个备份。
 SmartRobot3.1代码生成器发布:此SmartRobot3.1是For SPL3.1的代码生成器,下载SmartRobot3.1
 SmartRobot3.1使用简单介绍:
   没有写专门的使用说明,使用是非常简单的,只要
    1)先进行设置:数据库连接设置,命名空间其实采用默认即可,生成的实体类文件存放路径设置
    2)点击“》”载入数据库表信息
    3)选择需要的表,可以在右边进行映射关系的修改(推荐没必要修改的了),点击“闪电”进行应用(这会保存到内存中),然后进行点击其他的表,同样的操作。(注意:每个你需要的表,都要进行“选择”与“应用”一下。
   4)点击“文件”下的生成代码文件即可以生成实体类了,点击Save xml to就可以生成映射文件了。 
 
 SPL3.1的修改日志
  经过这段时间的修改,SPL终于升到3.1了,这在3.0的基础上修订了一些BUG并添加了一些新功能,如"时间戳",Clone,"多帐套"等:
    1.       对Informix数据库的支持
    
在连接Informix时,在DatabaseMap.xml的配置文件中datatype="Informix"即可

    2.添加了RetrieveCriteria 的指定显示字段功能
   

 RetrieveCriteria rc=new RetrieveCriteria(typeof(StudentEntity)); 
    rc.AddSelect(StudentEntity.__NAME); 
    rc.AsDataTable();

    使用AddSelect(string entityAttributeName)或
     AddSelect(string entityAttributeName,string AliasName)就可以指定要显示的字段值了。一旦使用一个或一个以上,就会按指定的显示,如果一个也不指定,默认会显示出所有字段!

 RetrieveCriteria rc=new RetrieveCriteria(typeof(StudentEntity)); 
    rc.AddSelect(StudentEntity.__NAME); 
    rc.AsDataTable();

    使用AddSelect(string entityAttributeName)或
     AddSelect(string entityAttributeName,string AliasName)就可以指定要显示的字段值了。一旦使用一个或一个以上,就会按指定的显示,如果一个也不指定,默认会显示出所有字段!

    3.增加了Oracle的“TOP”功能
     对于Oracle数据库,SPL将生成rownum<=N的语句获取前N条记录(RetrieveCriteria 和Query都加上了).

 

    4.实现了时间戳功能
     只要定义一列为timestamp="true",数据类型为String,如:
    

在对应的数据库也定义相应的字段,类型也为字符型,长度为20以上且不允许为空。 这样,在EntityObject进行Insert时会由SPL生成一个Now.Ticks自动插入到此字段作为时间戳 在Update时会进行时间戳的比较,如果正确才会更新进去,如果不正确则不会更新成功,这只需要通过返回"影响条数"来判断即可。
    在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 我们可以通过

Transaction t=new Transaction();
t.Add.. 
bool result=t.Process(); 


判断result来判断是否执行成功了,如果为false,则说在事务处理中遇到了并发错误,可以进行提醒重新提交 而且在事务中也进行了保存到内存的控制,在事务的并发生成错误时,那些相内的保存到内存的数据将被清空, 这样可以确保内存不会出现已经被Roolback的数据。

Transaction t=new Transaction();
t.Add.. 
bool result=t.Process(); 


判断result来判断是否执行成功了,如果为false,则说在事务处理中遇到了并发错误,可以进行提醒重新提交 而且在事务中也进行了保存到内存的控制,在事务的并发生成错误时,那些相内的保存到内存的数据将被清空, 这样可以确保内存不会出现已经被Roolback的数据。

  6.添加了对实体的Clone功能
  要把实体类标识为可序列化:如:

[Serializable] 
public class SuppliersEntity : EntityObject 
.. } 


然后使用实体对象的DeepClone()方法就可以了:
SuppliersEntity supplier2=(SuppliersEntity)supplier.DeepClone();
  这要求对实体类具有"[Serializable]",可以通过这次一起新发布的SmartRobot for SPL3.1代码生成工具进行生成。

[Serializable] 
public class SuppliersEntity : EntityObject 
.. } 


然后使用实体对象的DeepClone()方法就可以了:
SuppliersEntity supplier2=(SuppliersEntity)supplier.DeepClone();
  这要求对实体类具有"[Serializable]",可以通过这次一起新发布的SmartRobot for SPL3.1代码生成工具进行生成。

   7.对UpdateCriteria 的 AddAttributeForUpdate方法进行了加强
   原先只能进行string字段的更新:

public void AddAttributeForUpdate (string attributeName,string attributeValue)


现在允许进行强类型更新:

public void AddAttributeForUpdate (string attributeName,object attributeValue)


public void AddAttributeForUpdate (string attributeName,string attributeValue)


现在允许进行强类型更新:

public void AddAttributeForUpdate (string attributeName,object attributeValue)


   8.多帐套的支持
   SPL3.1开始,对多帐套进行了修复与扩展,有关“多帐套”功能的详细介绍请看:SPL3.1讲解(9)---多帐套处理篇

   9.添加了执行无返回执行Sql语句
   Query添加了

int ProcessSqlNonQuery("sql","db")

的方法用于执行不返回DataTable的SQL语句


其他更多SPL资料请参看SPL专栏:http://www.cnblogs.com/tintown/category/12787.html 

int ProcessSqlNonQuery("sql","db")

的方法用于执行不返回DataTable的SQL语句


其他更多SPL资料请参看SPL专栏:http://www.cnblogs.com/tintown/category/12787.html 


 受权说明:此SPL发布形式为DLL,免费使用,DLL中没有限制信息。
                 由于是免费的,不对SPL中可能存在的BUG所造成的项目损失负责。
                 接受BUG处理,但也不为此承诺必须处理。
                 SPL不公开源代码。

MAPn v3.1 Stable 一键安装包正式版发布

LAMP一键安装的网址:http://sourceforge.jp/projects/sfnet_mapn/

菁菁整站 v3.1 正式版

  • 2005年07月02日 16:50
  • 0B
  • 下载

connectify3.1官方正式

  • 2011年10月15日 14:36
  • 5.34MB
  • 下载

易协流程管理系统3.1版本发布

本次升级内容有: 一、管理控制台: 1、允许调整固定流程所属部门 2、增加“业务数据相关权限”,对应协作门户“字段设置”“码表维护”功能 3、计划任务自动发起可设置重要程度 4、增加业务数据...
  • mych
  • mych
  • 2012年08月02日 10:22
  • 806

一生锁页3.1正式版

  • 2015年08月02日 21:04
  • 1.44MB
  • 下载

Android3.1最新发布大变革

Google在美国旧金山Moscone West中心召开2011年I/O全球开发者大会,此次大会吸引了大量的开发者以及用户的关注。在第一天的会议当中Google正式发布了最新的Android3.1系统...

菁菁整站 v3.1 繁体正式版

  • 2005年08月13日 10:10
  • 0B
  • 下载

十项全能|引领业界-逐浪CMS3.1隆重发布

在逐浪软件的公司信条中, 有一句口号非常醒目:脚比路更长。 每次当客户问到何谓“脚比路更长”时, 我们都报以微笑,并以行动作为回答, 因为我们认为知行合一才是真谛。 从曼波的美国彼岸...
  • wwwwzf
  • wwwwzf
  • 2013年01月19日 10:40
  • 297
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SmartPersistenceLayer 3.1 正式发布
举报原因:
原因补充:

(最多只允许输入30个字)