簡體   English   中英

如何將類實例傳遞給基類構造函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM