我目前正在致力于实现aspnetboilerplate的事务管理
下面是我用来插入订单和与该订单关联的产品的方法
public class OrderController
{
IOrderAppService _orderAppService;
public OrderController(IOrderAppService orderAppService)
{
_orderAppService = orderAppService;
}
public void TestOrder()
{
_orderAppService.TestTransaction();
}
}
public class OrderAppService : IOrderAppService
{
//repositories are injected here
public void TestTransaction()
{
//Created 'order' and 'products' here
//Committing the created objects
CommitOrderTransaction();
}
private void CommitOrderTransaction()
{
using (var unitOfWork = _unitOfWorkManager.Begin())
{
//Inserts the Order record
CommitInsertOrderHeader(); // Order Header is saved in database by using SaveChanges() method
//Inserts the Product records associated with OrderId
CommitInsertOrderDetails();
unitOfWork.Complete();
}
}
}正如aspnetboilerplate文档所述,“如果当前工作单元是事务性的,那么如果发生异常,事务中的所有更改都会回滚,即使是保存的更改也是如此。”
在我的例子中,当插入OrderDetails时发生异常时,我希望标题记录也被回滚,但我仍然在数据库中有订单标题记录。
https://stackoverflow.com/questions/47633525
复制相似问题