如何将类实例传递给基类构造函数
本文关键字:基类 构造函数 实例 | 更新日期: 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
.