说明,本人文字水平有限,不明的可以留言商讨!
在企业库上封装DataBase过程,通过Database类的创建连接Connection, 然后使用connection创建事务,
为了避免在一个事物内的多个数据库操作之间传递数据库连接或者事务对象,提供一个上下文环境来管理
数据库连接和事务对象。在原来的citi_erp中,没有使用上下文环境,而是使用在数据访问层之间传递静
态事务变量。需要些很多的重复代码。例如
PO_Detail_DA.Trans = this.Trans
有很多的这样代码的重复,提供了上下文环境,就可以不用这样,可以直接在数据访问层PO_Detail_DA里
面使用上下文中的事务,上下文环境如何实现的呢。
上下文环境要实现随处可以调用,实现一定是使用静态类啊,呵呵。看一下实现DBManager类,功能:用
来管理上下文环境。假如我们的是下文环境借口如下:
internal interface IContextContainer
{
void AddContext(string name, DataAccessContext context);
DataAccessContext GetContext(string name);
bool Exists(string name);
void Dispose(string name);
}
对于上述接口的实现可以分为windows系统和web系统不同的环境来实现,因为windows和web的运行方式不
同,存储上下文环境的方式也不同。这一点在这儿不提。以后会慢慢提出来。
那么,DBManger中就如下主要实现上下文中的事务管理,事务管理实现方法:看上下文环境容器中是否有
对应的上下文环境,获得对应的上下文环境,通过该环境来提交、回滚事务。