Rob*_*rth 7 architecture ado.net transactions system.transactions n-tier-architecture
因此,基于回答我刚才的问题,交易也得到来自LTM到DTC,如果多个连接在一个事务中打开,即使连接都具有相同的连接字符串升高.
所以,我的下一个问题是,可以采用什么策略来避免这种"功能"?在我看来,基于资源使用,我想确保尽可能多地使用LTM.在正确的面向对象的业务逻辑层中,我能想到的唯一方法是在数据访问层创建请求级静态连接对象,并在调用之间共享,直到请求完成(这里隐含的知识)是业务对象实体是谨慎的,不知道他们被调用的是什么顺序,另外一个事实是,人们不希望将连接对象冒泡到业务对象层,因为这将是数据存储实现细节流血到另一层).
有没有其他人有任何想法不会完全破坏n层系统的层封装?
我使用的是 TransactionHelper 类,它更新 TableAdapter 中的所有命令,以将连接和事务替换为启动事务的 TableAdapter 中的命令。您可以在 Scott Lanford 的博客CodeExperiment上找到一些执行此操作的代码,您可以根据需要进行调整。瑞安惠特克也有类似的做法。
请注意,自从我改用 LINQToSQL 后,我就不再遇到这个问题了。您可能需要考虑使用 LINQToSQL 或 nHibernate 作为替代解决方案。两者都会对本地交易有良好的支持。
| 归档时间: |
|
| 查看次数: |
839 次 |
| 最近记录: |