使用通用存储库模式处理事务时,工作单元模式的替代方案是什么



我知道dbcontext本质上是一个存储库和工作单元模式。

然而,作为一个抽象,假设我实现了一个通用的存储库模式,带有工作单元模式,那么这可以处理这样的情况:假设作者和书被插入,其中一个失败了,那么两者都不会被插入。

现在假设我不使用工作单元模式,那么在使用通用存储库模式时,处理事务行为的替代方法是什么?

您可以在存储库之外使用事务范围
如果您的代码从未到达对Complete((的调用,并且作用域已被释放,则事务将中止,并将发生回滚。

using var scope = new TransactionScope(
TransactionScopeOption.Required, 
new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted },  
TransactionScopeAsyncFlowOption.Enabled);
authorRepository.Add(author);
bookRepository.Add(book);
scope.Complete();

但是,为什么不将请求范围的UnitOfWork注入到您的每个存储库中,并让它为您包装和处理事务呢?

相关内容

  • 没有找到相关文章

最新更新