DataRabbit 轻量的数据访问框架(11) -- DataRabbit 的入口点 IDataAccesser

几乎在前面介绍DataRabbit的每一篇文章中都提到了作为DataRabbit的入口点的IDataAccesser接口,这里我们来详细的介绍一下它,希望这篇文章不是迟到了太久。

1.IDataAccesser特点
  关于IDataAccesser首先要提醒以下几点:
(1)IDataAccesser是DataRabbit框架的入口点,所有的访问器、分页管理器大纲操作者都可以从IDataAccesser获取。
(2)IDataAccesser针对的是一个数据库,对于一个特定的数据库,应用程序只需要维护一个IDataAccesser实例(引用)即可。

(3)IDataAccesser本身没有继承 ITransactionAccesser 接口,所以,IDataAccesser只能在非事务环境中工作。

  IDataAccesser是DataRabbit框架第一入口点,但是,在实际的应用中,由于数据库操作都要求在事务中进行,所以大型的实际应用中,我们更经常使用另一个基于事务的入口点 -- TransactionScope,来获取基于事务的访问器,如此,可以很清晰地将访问器的生命期与事务范围关联起来。当然,分页管理器和大纲操作者只能通过IDataAccesser获取,它们通常不需要基于事务进行访问数据库。

2.IDataAccesser 接口解释:
  下面,我来解释一下IDataAccesser接口中其它的一些元素的含义:


属性:
  DataBaseType -- 目标数据库类型。
  Connectionable -- 当前数据库连接是否可用。
  OrmCoagent -- 通过向OrmCoagent属性注入IOrmCoagent引用可以为ORM提供EntityType与数据表名称的映射关系,这在介绍IOrmAccesser时曾提到。
  DataElementFactory -- 如果我们要获取底层的基础元素,如IDbCommand、IDbConnection等,可以通过该属性的相关方法得到。
 
方法:
  GetTableNames -- 获取目标数据库中的所有用户表的名称。
  GetViews -- 获取目标数据库中的所有视图名称
  GetTriggers -- 获取指定table表上的所有触发器
  IsTableExist -- 数目库中是否存在指定的目标表table

3.从何处获取入口点IDataAccesser引用?
    我们可以从DataAccesserFactory工厂获取IDataAccesser引用。
DataConfiguration config =
new DataConfiguration(DataBaseType.SqlServer, "127.0.0.1", "sa", "chenqi", "AutoSchedulerSystem", null)
IDataAccesser dataAccesser = DataAccesserFactory.CreateDataAccesser(config);

  CreateDataAccesser()方法还有一个重载,像下面这样:

string connStr =
"Data Source = 127.0.0.1; user id =sa ;password = chenqi; Initial Catalog = AutoSchedulerSystem" ;
IDataAccesser dataAccesser
= DataAccesserFactory.CreateDataAccesser(DataBaseType.SqlServer, connStr);


     
  DataConfiguration封装了数据库的连接地址信息,其类图如下所示:

  DataConfiguration中的DataSource属性是专门针对Oracle的,其它数据库可设值为null。目前,DataRabbit内置了对SqlServer和Oracle的支持,对于其它类型的数据库,需要通过插件进行支持。


原文出处:http://www.cnblogs.com/zhuweisky/
金鳞岂是池中物,一遇风云便化龙