0

我的事务有问题,因为它们被升级为分布式事务,这是我不想要的。根据我的阅读,这是由于在事务范围内打开多个连接造成的。为了纠正这个问题,我正在重新编写我的代码,以便能够创建一个 dbContext 并将其传递给所有类,因此我只有一个上下文,因此在事务范围内只有一个连接。

我的问题是,如何创建上下文的一个实例并将其传递给基类。我发布的是我试图在概念上做的事情,但显然这行不通。我怎样才能做到这一点?

    private WorkOrderHeaderRepository _workOrderHeaderRepository;
    private WorkOrderDetailRepository _workOrderDetailRepository;
    private InventoryMgmtContext _dbContext;

    #region Constructors

    public ManageWorkOrdersAppServ()
        : base(new WorkOrderHeaderRepository(_dbContext )) <----How pass _dbContext to base here
    {
        _dbContext = new InventoryMgmtContext();
        _workOrderHeaderRepository = new WorkOrderHeaderRepository(_dbContext);
        _workOrderDetailRepository = new WorkOrderDetailRepository(_dbContext);

    }
4

1 回答 1

3

很难说在这里做什么是正确的,但听起来您希望上下文是一个静态字段,而不是一个实例字段

private static InventoryMgmtContext _dbContext = new InventoryMgmtContext();
public ManageWorkOrdersAppServ()
    : base(new WorkOrderHeaderRepository(_dbContext )) 
{
    _workOrderHeaderRepository = new WorkOrderHeaderRepository(_dbContext);
    _workOrderDetailRepository = new WorkOrderDetailRepository(_dbContext);

}

是的?

这里的缺点是上下文永远存在,这可能不是你想要的。如果这不是您想要的,则将问题推给调用者

public ManageWorkOrdersAppServ(Context dbContext)
    : base(new WorkOrderHeaderRepository(dbContext )) 
{
    _workOrderHeaderRepository = new WorkOrderHeaderRepository(_dbContext);
    _workOrderDetailRepository = new WorkOrderDetailRepository(_dbContext);

}

让调用者在适当的上下文中传递并让他们管理它的创建。

另外,当我们批评这段代码时:.NET stl gdlns frwn on abrvs in nms, thyr hrd 2 rd。我想你是想说InventoryManagementContext

于 2013-04-28T14:31:16.490 回答