
mikecat
迈克老猫
-
个人空间
- 组别:管理员
- 性别:
- 来自:中国-石家庄
- 积分:2256
- 帖子:1924
- 注册:
2007-12-31
|
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/
金鳞岂是池中物,一遇风云便化龙

|