如何将类实例传递给基类构造函数
我与我的事务有问题,因为他们正在升级到分布式事务,我不想。从我所读到的,这是由于在交易范围内打开多个连接而造成的。为了解决这个问题,我正在重新编写我的代码,以便能够创建一个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 stl gdlns frwn on nrms中的abrvs,thyr hrd 2 rd。我想你的意思是说InventoryManagementContext
。
埃里克,我很欣赏这个回应。正如你将从我的下一个问题中得出的结论,我是c#开发的新手,并且是“受过教育的人”。那么你的意思是说它会永远活着?第二种方法是我现在正在做的。我只是不喜欢在控制器级创建我的上下文,并试图将它保留在服务器层的想法。 – 2013-04-29 01:36:38
啊,不,我不想让dbContext持续那么久。我需要重构一下我的代码。谢谢。 – 2013-06-14 18:16:27
即使这样做确实有效,它不会,*你会传递一个空引用*。您尚未初始化该字段。 – 2013-04-28 14:26:57