如何将类实例传递给基类构造函数

本文关键字:基类 构造函数 实例 | 更新日期: 2023-09-27 18:11:26

我的事务遇到了问题,因为它们正在升级为分布式事务,这是我不想要的。据我所知,这是由于在事务范围内打开多个连接造成的。为了纠正这一点,我正在重新编写我的代码,以便能够创建一个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);
    }

如何将类实例传递给基类构造函数

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

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仍然依赖于nms中的abrvs,我想你的意思是说InventoryManagementContext .