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

简介: (完全限定类名:DataRabbit.ITransactionAccesser)    在DataRabbit 轻量的数据访问框架 --序 中,我们已经知道,所有的访问器接口都继承了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接口,都符合上述的原则,所以在使用这些访问器的时候,要注意事务型访问器对象与非事务型访问器对象的区别。


返回到: 轻量的数据访问框架 --序   
目录
相关文章
|
SQL 缓存 Oracle
1.NetDh框架之数据库操作层--Dapper简单封装,可支持多库实例、多种数据库类型等(附源码和示例代码)
1.NetDh框架开始的需求场景 需求场景: 1.之前公司有不同.net项目组,有的项目是用SqlServer做数据库,有的项目是用Oracle,后面也有可能会用到Mysql等,而且要考虑后续扩展成主从库、多库的需求。
3582 0
|
SQL .NET 数据库
.net平台性能很不错的轻型ORM类Dapper
dapper只有一个代码文件,完全开源,你可以放在项目里的任何位置,来实现数据到对象的ORM操作,体积小速度快。 使用ORM的好处是增、删、改很快,不用自己写sql,因为这都是重复技术含量低的工作,还有就是程序中大量的从数据库中读数据然后创建model,并为model字段赋值。
996 0
|
数据库连接 数据库 负载均衡
DataRabbit 轻量的数据访问框架(19)-- 读写分离与隔离级别
在高并发的系统中,我们常采用多数据库分散放置、读写分离、细粒度的隔离级别设定等策略来提高系统的性能。DataRabbit3.3 以及以上版本对这三种策略都给予了内置的支持。 (1)数据库分散放置:对于较大型的系统,在设计数据库时,我们可以根据业务范围将其设计为多个数据库,而不是一个,然后将这些数据库部署在不同的物理服务器上,以分担负载。
830 0
|
数据库 Java Spring
DataRabbit 轻量的ORM框架(17)-- 使用DataRabbit的最佳实践
在DataRabbit 轻量的数据访问框架(12)-- 将DataRabbit融入架构 一文中介绍了如何将DataRabbit与三层架构结合起来,但是,在实际的项目中,每一层是如何使用DataRabbit的了?本文将展示作者在项目中使用DataRabbit的标准做法。
688 0
|
SQL 数据库
DataRabbit 轻量的ORM框架(18)-- 捕获数据库访问异常的详细信息
最新版本的DataRabbit(版本号:V3.2)新增一项重要功能--可以捕获访问数据库时产生的异常的详细信息,包括:异常对象、Sql语句、sql参数的名称和值。这是由IDBOperationLogger接口提供支持的。
828 0
|
数据库
DataRabbit 轻量的数据访问框架(03) -- IOrmAccesser(续)
本文将接着 DataRabbit 轻量的数据访问框架 -- IOrmAccesser 继续介绍IOrmAccesser的一些高级功能。这些高级功能需要DataRabbit.ORM.ISmartEntity接口的支持。
703 0
DataRabbit 轻量的数据访问框架(04) -- IEntityRelationLoader
(完全限定类名:DataRabbit.ORM.IEntityRelationLoader)   在DataRabbit框架提供的ORM功能之中,除了IOrmAccesser接口展现的核心ORM功能外,IEntityRelationLoader接口也提供了一些有意义的功能。
780 0