DataRabbit 轻量的数据访问框架(01) -- ITransactionAccesser

   (完全限定类名:DataRabbit.ITransactionAccesser)

   在DataRabbit 轻量的数据访问框架 --序 中,我们已经知道,所有的访问器接口都继承了ITransactionAccesser接口。ITransactionAccesser的含义在于:访问器对象即可以工作于一个事务(Transaction)上下文中,也可以在脱离事务的环境中工作。
    public   interface  ITransactionAccesser
    {
        
///   <summary>
        
///  InTransaction 访问器是否处于一个事务中。
        
///   </summary>
         bool  InTransaction {  get ; }
    }

   如果访问器对象在事务上下文中工作,则该访问器对象就是有状态的,并且该访问器对象的生命期将随着事务的结束而结束,也就是说,当关联的事务结束后,就不能再使用这个访问器对象了。   
   如果访问器对象工作于非事务环境,则该访问器对象就是无状态的,可以以Sinleton的模式来使用这个访问器对象,也就是说,只需要一个这样的访问器对象,就可以在任何时间任何地点来通过它对数据库进行非事务方式的访问。如从 TransactionScope获取OrmAccesser:
         ///   <summary>
        
///  GetOrmAccesser 获取访问目标表的ORM访问器。       
        
///   </summary>  
        IOrmAccesser < EntityType >  NewOrmAccesser < EntityType > ();
   如果当前的 TransactionScope实例是基于事务的,则该方法将返回基于事务的ORM访问器。同理, 如果当前的TransactionScope实例不是基于事务的,则该方法将返回非事务型的ORM访问器。DataRabbit在实现时,将缓存非事务型的访问器对象,因为非事务型的访问器对象是无状态的,所以可以以Singleton模式来使用。也就是说,如果我们多次使用非事务的 TransactionScope实例来调用 TransactionScope.NewOrmAccesser()方法,那么多次调用得到的结果都将是同一个非事务型的ORM访问器。
   如果 TransactionScope实例是基于事务的,则 TransactionScope.NewOrmAccesser()方法 总是创建一个新的事务型访问器对象返回,当作为参数的事务结束时,返回的访问器对象的生命期也就结束了。
   无论是ORM访问器、还是Relation访问器等等,只要继承了ITransactionAccesser接口,都符合上述的原则,所以在使用这些访问器的时候,要注意事务型访问器对象与非事务型访问器对象的区别。


返回到: 轻量的数据访问框架 --序   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值