![](/img/trans.png)
[英]How to pass another class instance to a controller constructor
[英]How to pass class instance to base class constructor
我的事務存在問題,因為它們正在升級為我不想要的分布式事務。 據我了解,這是由於在事務范圍內打開多個連接引起的。 為了解決這個問題,我正在重新編寫代碼,以便能夠創建一個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以ambvs的形式出現在nms上,hrd為2rd。 我認為您的意思是說InventoryManagementContext
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.