WAWACRM

基于.NET的开源CRM项目
做一件事,一定要坚持。意志不坚定的,参加也没意义。

导航

[蛙蛙王子]持久化容器改进方案.doc

Posted on 2005-09-15 09:17  WAWACRM  阅读(342)  评论(0编辑  收藏  举报
 这是原来的持久容器的类

public class StdPersistenceContainer

{

       
protected ContainerMapping currentMap;

       
public StdPersistenceContainer()

       
public StdPersistenceContainer( ContainerMapping initCurrentMap )

       
public ContainerMapping ContainerMapping{get;set;}

       
public virtual void Insert( PersistableObject insertObject )

       
public virtual void Select( PersistableObject selectObject )

       
public virtual void Update( PersistableObject updateObject )

       
public virtual void Delete( PersistableObject deleteObject )

}


这是我新设计的持久容器的类,加入了手动事务和硬编码sql语句的支持,大家看看还有哪些需要的,最后那几个函数我设计成静态函数不知道合适不合适,大家也给参考参考,不过我感觉事务加到容器里好像不太对,因为一个特定的容器只有CRUD四个方法,把事务加到里面也没有呀,应该些个事务管理的类,来处理多个容器持久化方法的的事务吧,大家都来想想,如何改进咱们的架构,其实我感觉用.NET自带的事务也可以处理,具体示例看你的机器里的以下目录

<SDK>v1.1\Samples\Technologies\ComponentServices\Transactions

public class StdPersistenceContainer

{

       
protected ContainerMapping currentMap;

       
public StdPersistenceContainer()

       
public StdPersistenceContainer( ContainerMapping initCurrentMap )

       
public ContainerMapping ContainerMapping{get;set;}

       
public virtual void Insert( PersistableObject insertObject )

       
public virtual void Select( PersistableObject selectObject )

       
public virtual void Update( PersistableObject updateObject )

       
public virtual void Delete( PersistableObject deleteObject )

       
public static virtual void BeginTransaction() //开始事务

       
public static virtual void SetAbort()                                  //终止事务并回滚

       
public static virtual void SetComplete    ()                   //提交事务

       
public static virtual void ExecuteNonQuery(string sqlText)  //用硬编码sql语句查询数据库

}


另外关于并发的处理,请查看以下链接,我想我们的并发处理在存储过程里写就可以了吧。

ms-help://MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconoptimisticconcurrency.htm

解决了事务,并发的问题咱们的架构就先这样定下来了。