gpt4 book ai didi

architecture - System.Transactions 中避免事务升级的策略

转载 作者:行者123 更新时间:2023-12-04 12:50:17 25 4
gpt4 key购买 nike

因此,基于对 my previous question 的回答,如果在事务期间打开多个连接,事务确实会从 LTM 提升到 DTC,即使这些连接都具有相同的连接字符串。

那么,我的下一个问题是,可以采用哪些策略来避免这种“功能”?在我看来,根据资源使用情况,我想确保尽可能多地使用 LTM。在适当的面向对象的业务逻辑层中,我能想到的唯一方法是在数据访问层创建一个请求级静态连接对象,并在调用之间共享该对象,直到请求完成(此处隐含的知识是业务对象实体是谨慎的,并且不知道它们将被调用的顺序,另外还有一个事实是人们不希望将连接对象冒泡到业务对象层,因为这将是数据存储实现细节渗入另一层)。

有没有其他人有任何想法不会完全破坏n层系统的层封装?

最佳答案

我使用的是 TransactionHelper 类更新 TableAdapter 中的所有命令,以将连接和事务替换为来自发起事务的 TableAdapter 的那些命令。您可以找到 some code that does this ,您可以根据需要调整,在 Scott Lanford 的博客上,CodeExperiment . Ryan Whitaker 有一个 similar approach .

请注意,自从我开始使用 LINQToSQL 后,我不再有这个问题。您可能需要考虑使用 LINQToSQL 或 nHibernate 作为替代解决方案。两者都对本地事务有很好的支持。

关于architecture - System.Transactions 中避免事务升级的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/395199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com