gpt4 book ai didi

nhibernate - 在 Sharp Architecture 中使用 NHibernate 处理嵌套事务

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

我想知道如何处理嵌套事务,例如之间
一个开始并提交,我有另一个开始和提交。我的原因
问你是因为在我的 ApplicationServices 项目中我有
依赖于其他服务的服务。和一个家长的方法
服务开始一个事务,根据某种逻辑,它可能
必须调用依赖子服务的方法之一,即
也依次执行开始和提交。 child 服务方法是
也可以独立使用,也可以直接从 Controller 使用,
因此我必须在子服务中使用开始和提交。

所以简而言之,基本上我最终会得到这样的东西

   using( Repository1.DbContext.BeginTransaction() )
{
try
{
.....
.....
using( Repository2.DbContext.BeginTransaction() )
{
try
{
.....
.....
Repository2.DbContext.CommitTransaction()
}
catch
{
Repository2.DbContext.RollBack();
throw;
}
}
Repository1.DbContext.CommitTransaction()
}
catch
{
Repository1.DbContext.RollBack();
throw;
}
}

所以有嵌套的开始和提交。我想知道

- 当嵌套的 Repository2 获取时,会出现什么行为
成功提交但父 Repository1 被回滚?

我如何在代码中控制这种行为,例如

- 如果我不想让子交易成为父交易的一部分
交易。
- 如何确定交易之前是否已经在运行
创建子交易

或者是否有另一个优雅的解决方案来解决这个问题?

谢谢
纳比尔

最佳答案

NHibernate 不支持嵌套事务。 Repository1 和 Repository2 的 DbContext 是否相同?如果是这种情况,那么他们可以参与相同的交易。如果没有,您必须将事务拆分为两种方法或查看 System.Transactions namespace .

关于nhibernate - 在 Sharp Architecture 中使用 NHibernate 处理嵌套事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3097320/

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