日期:2014-05-20  浏览次数:20635 次

事务添加数据放在那一层比较好?
是BLL层 好 还是 DAL层好?
------解决方案--------------------
一个DAL操作,必定有以下的抽象:

1. 方便地查询。例如 一个可以支持 IQueryable 查询的机制。
2. 方便地更新。例如 Save<T>(T obj)。它包括新增或者修改,如果这个obj是从事务中查询的,那么就是更改。
3. 方便地删除。例如 Remove<T>(T obj)。
4. 事务的提交和回滚。


你在BLL中调用所谓的DAL的什么“增删改查”操作么?既然你连查询一下数据库、修改一下数据库都在BLL层调用,那么凭什么对于事务提交和回滚这么重要的操作就不调用?
------解决方案--------------------
所以综合起来,你应该给一个开关,来让Bil决定是否启用事务

bil有决定权,但是具体细节他没必要知道,他只需要知道我有决定是否启用事务的权利就ok了
------解决方案--------------------
一般地加个重载不就可以解决了么
执行SQL的方法还不是业务逻辑层来的需求嘛,单纯的处理数据的方法放在DAL,这样BLL中的方法看起来也会明朗很多
------解决方案--------------------
引用:
我以前是这样做的
不过刚刚看了一篇文章,说 事务 添加 数据 之类的操作放在BLL层  

不过这样如果要是操作多个表, 不是每个组合都要在DAL里面写一个方法?


引用:
所以综合起来,你应该给一个开关,来让Bil决定是否启用事务

bil有决定权,但是具体细节他没必要知道,他只需要知道我有决定是否启用事务的权利就ok了


让他们公用事物对象
------解决方案--------------------
引用:
我以前是这样做的
不过刚刚看了一篇文章,说 事务 添加 数据 之类的操作放在BLL层  

不过这样如果要是操作多个表, 不是每个组合都要在DAL里面写一个方法?


确实是这样的,如果 你的项目小,业务不复杂,你可能觉得这样做很麻烦,但如果项目比较大,且多人合作,
就要把事务放在bll层,否则很可能会给你后面的工作带了更多的麻烦.
------解决方案--------------------
每个框架的实现都不一样,这也没有条条框框,只要对开发有利就好