DAL中开启ado事务的思路!
cnidb 2009-03-20 05:03:32 一、先描述一下系统结构:
DBUtility
SQLHelper.cs
Model
BLL
IBLL
SQLServerDAL
OracleDAL //新增加的
IDAL
Factory
DALFaceory.cs
BLLFaceory.cs
WebOA
WebShop
WebSite
SQLHelper中是各种的数据库操作方法,都是使用后就关闭了数据库连接;
二、开发现状
在需要使用到数据库事务时,都是使用存储过程实现(图个方便)。
三:新需求
需要同时使用Oracle,并且需要事务处理;
四:暂时想到的解决方式
1.在BLL中直接写事务和SQL;我认为这会增加维护成本,您认为呢?
2.修改DAL(在每一个需要事务处理的方法中);
并在SQLHelper中增加一个public static int ExecTran(List<...的方法;
3.个人认为更加麻烦的一种方式:
3.1:SQLHelper中增加GetConn(),CloseConn(),开始事务(String 名称),执行事务(String 名称),四种方法;
3.2:各项DAL层中的各方法,比如ADD(),多写一个方法public ADD(SqlConnection conn,SqlTransaction tx,...){.....}
3.3:BLL中打开连接,开启事务,再执行各个DAL中的相应方法(传入连接和事务参数),最后执行事务,关闭连接;
四:问题
1、请评价一下以上各方式的可行性、各自优缺;
2、现在的情况下,您有什么建议?
3、如果新的工程,一开始就考虑到了这种情况,应该使用什么样的架构设计?
谢谢!