【发布时间】:2018-03-02 00:18:40
【问题描述】:
我想知道如何处理嵌套事务,例如之间 一个开始并提交,我还有另一个开始并提交。我的理由 问你是因为在我的 ApplicationServices 项目中我有 依赖于其他服务的服务。和一个父母的方法 服务开始一个事务,根据一些逻辑,它可能 必须调用依赖子服务的方法之一,即 也依次执行开始和提交。子服务方法是 也可以直接从控制器独立使用, 因此我必须在子服务中使用开始和提交。
所以简而言之,基本上我最终会得到这样的东西
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 s#arp-architecture