DataRabbit 轻量的数据访问框架(05) -- ITableAccesser

简介: (完全限定类名:DataRabbit.Relation.ITableAccesser)       ORM并不能完成所有的事情,有些数据库访问还是需要基于关系来进行,对于那些不提供基于关系进行数据访问操作的纯ORM框架,我认为是不明智的。
   (完全限定类名:DataRabbit.Relation.ITableAccesser) 
   
   ORM并不能完成所有的事情,有些数据库访问还是需要基于关系来进行,对于那些不提供基于关系进行数据访问操作的纯ORM框架,我认为是不明智的。在DataRabbit中,基于ORM的访问和基于关系进行数据访问各占了一半的天空,这使得我们在无法用ORM达成的地方,可以转向使用基于关系的访问器来达成。DataRabbit.Relation命名空间下的类和接口用于提供基于关系的数据库访问操作,主要包括:针对数据库的Relation访问器(IRelationAccesser)、针对Table的Relation访问器(ITableAccesser)和针对存储过程的访问器(ISPAccesser),本文先介绍 ITableAccesser。
   
   同所有DataRabbit中的其它访问器一样,ITableAccesser也继承自ITransactionAccesser,它用于针对一个特定的表进行基于关系的数据访问。我们可以从DataRabbit的入口点IDataAccesser中获取ITableAccesser引用,比如,我们要得到针对Student表的ITableAccesser,可以这样做:
   ITableAccesser stuTableAccesser  =  dataAccesser.GetTableAccesser( " Student " null );

   同 ORM访问器一样,所有基于关系的访问器都向使用者屏蔽了地层的IDbCommand、IDbConnection等对象,使用者不必再关心打开连接、执行命令、关闭连接等繁琐的操作,只需要将sql语句交给访问器执行就可以了。比如,我们要删除所有年龄大于30的student,使用ITableAccesser可以这么做:
   ITableAccesser stuTableAccesser  =  dataAccesser.GetTableAccesser( " Student " null );
   stuTableAccesser.Delete(
string .Format( " where {0} > '30' "  ,Student._Age));
    使用基于关系的访问器需要自己手写SQL语句,特别是用于搜索的Where子句,由于能支持手写SQL语句,所以相对于ORM访问器,基于关系的访问器可以执行更复杂的数据库操作。注意,在介绍ORM访问器时,我们经常使用Filter来表示条件,但是Filter以及IFilterTree仅仅只能在ORM访问器中使用,在基于关系的访问器中是不能使用它们的。
   IDataAccesser接口相对简单,我们来看看它的全貌,之后你就知道该接口中各方法的含义了:
     public   interface  ITableAccesser :ITransactionAccesser
    {
        
#region  TableName
        
///   <summary>
        
///  TableName 目标表名称
        
///   </summary>
         string  TableName {  get ; } 
        
#endregion

        
#region  CommitData
        
///   <summary>
        
///  CommitData 提交DataTable中的changes到数据库
        
///   </summary>         
         void  CommitData(DataTable dt);
        
#endregion

        
#region  Delete
        
///   <summary>
        
///  Delete 删除目标表中所有满足where条件的记录
        
///   </summary>         
         void  Delete( string  where);        
        
#endregion

        
#region  Clear
        
///   <summary>
        
///  Clear 清空目标表
        
///   </summary>
         void  Clear();
        
#endregion

        
#region  Insert
        
///   <summary>
        
///  Insert 将row存放到数据库中
        
///   </summary>        
         void  Insert(DataRow row);       
        
#endregion

        
#region  Get
        
///   <summary>
        
///  Get 获取满足条件的DataSet
        
///   </summary>       
        DataSet Get( string  where);

        
///   <summary>
        
///  GetOne 返回满足where条件的第一条记录
        
///   </summary>        
        DataRow GetOne( string  where);
        
#endregion               
        
        
#region  no transaction
        
///   <summary>
        
///  GetRecordsCount 获取目标表中满足where条件的记录总数
        
///   </summary>  
         int  GetRecordsCount( string  where);

        
///   <summary>
        
///  NewRow 返回一个与目标表大纲完全一致的DataRow
        
///   </summary>         
        DataRow NewRow();

        
///   <summary>
        
///  GetEmptyTable 获取一个空的DataTable,该DataTable反映了目标表的结构
        
///   </summary>
        
///   <returns></returns>
        DataTable GetEmptyTable();
        
        
#endregion

       
    }


转到: DataRabbit 轻量的数据访问框架 -- 序
目录
相关文章
|
XML 数据可视化 Java
非常轻量、高性能、可集成、可扩展的流程引擎compileflow
compileflow Process引擎是淘宝工作流TBBPM引擎之一,是专注于纯内存执行,无状态的流程引擎,通过将流程文件转换生成java代码编译执行,简洁高效。当前是阿里业务中台交易等多个核心系统的流程引擎。
|
SQL 缓存 Oracle
1.NetDh框架之数据库操作层--Dapper简单封装,可支持多库实例、多种数据库类型等(附源码和示例代码)
1.NetDh框架开始的需求场景 需求场景: 1.之前公司有不同.net项目组,有的项目是用SqlServer做数据库,有的项目是用Oracle,后面也有可能会用到Mysql等,而且要考虑后续扩展成主从库、多库的需求。
3702 0
|
数据库连接 数据库 负载均衡
DataRabbit 轻量的数据访问框架(19)-- 读写分离与隔离级别
在高并发的系统中,我们常采用多数据库分散放置、读写分离、细粒度的隔离级别设定等策略来提高系统的性能。DataRabbit3.3 以及以上版本对这三种策略都给予了内置的支持。 (1)数据库分散放置:对于较大型的系统,在设计数据库时,我们可以根据业务范围将其设计为多个数据库,而不是一个,然后将这些数据库部署在不同的物理服务器上,以分担负载。
859 0
|
数据库 Java Spring
DataRabbit 轻量的ORM框架(17)-- 使用DataRabbit的最佳实践
在DataRabbit 轻量的数据访问框架(12)-- 将DataRabbit融入架构 一文中介绍了如何将DataRabbit与三层架构结合起来,但是,在实际的项目中,每一层是如何使用DataRabbit的了?本文将展示作者在项目中使用DataRabbit的标准做法。
715 0
|
SQL 数据库
DataRabbit 轻量的ORM框架(18)-- 捕获数据库访问异常的详细信息
最新版本的DataRabbit(版本号:V3.2)新增一项重要功能--可以捕获访问数据库时产生的异常的详细信息,包括:异常对象、Sql语句、sql参数的名称和值。这是由IDBOperationLogger接口提供支持的。
849 0
|
.NET 开发框架 SQL
DataRabbit 轻量的数据访问框架(15)-- IOrmAccesser的BatchInsert批量插入!
DataRabbit3.0为ORM访问器提供了批量插入的功能,其方法定义如下:         ///         /// BatchInsert 批量插入一组记录。忽略所有Blob字段。        ///                void BatchInsert(IList entityList);     当我们需要一次性向同一Table中插入大量(如千条以上)的记录时,使用BatchInsert方法可以显著的提供性能。
48761 0
|
SQL .NET 开发框架
DataRabbit 轻量的数据访问框架(14)-- DataRabbit 3.0 与 Linq to sql 性能比较
今天装好了VS2008 Beta2,就迫不及待地试用一下Linq中的ORM功能,在初步尝试后,发现Linq中的ORM还是非常不错的,通过反射查看System.Data.Linq.dll发现,Linq中的ORM是使用反射完成了OR的映射工作,基于此,我开始有点怀疑Linq中的ORM的性能问题。
943 0