关于分层架构中的数据库事务

bll.出库申请单管理.ChangeState()
这个方法执行出库单的状态更改动作
因为 每个bll都是单独的数据库连接 为了事务的一致
我在 bll.出库单管理.出库()
这个方法里直接操作出库申请单表的state字段而不是调用
bll.出库申请单管理.ChangeState()
然后 现在写销售单管理 销售单生成出库申请单
当出库申请单状态更改时需要更改销售单的状态
这样的 我就还要更改两处的代码bll.出库申请单管理.ChangeState()
bll.出库单管理.出库()
这样的设计太差了 都是为了实现数据库的事务一致
多数据库的事务一致 net可以实现 但是有点烦
折中的方式 我觉得是这样
调用bll的代码实现数据库连接的管理 
以asp.net mvc + linq to sql 为例
controller 负责 控制 datacontext 
new bll(datacontext db)
bll 一系列的操作
最后 db.submitchanges()
这样的操作不知道会不会有问题
首先;对于数据读取是没有问题的
有个问题就是这种情况 比如删除一个记录后返回列表
这样的就需要 bll.delete()后 db.submitchanges() 
然后再去查询获取列表
对于这样的设计对于没有多线程的web程序来说 应该不会有什么问题
这样做还有个好处就是 每次请求就只用到一个数据库连接
而像一个门户网站的首页 如果用我之前的方式 可能需要几十个数据库连接
 
posted @ 2010-12-21 16:21  liuwei0514  Views(294)  Comments(0Edit  收藏  举报