簡體   English   中英

Autofac:在將類型A注冊為類型之后,注冊類型A的實例

[英]Autofac: register an instance of type A, after type A is already registered as type

我有一個PortalEntities類,它擴展了DbContext

我有一個EFGenRepo類,其類型為PortalEntites的私有prop context EFGenRepo類具有一個構造函數:

public EFGenRepo(PortalEntities entities) { this.context = entities; }

現在,我有一個ClientManager類,該類具有EFGenRepo的實例repo 請記住,由於repocontext道具是私有的,所以我無法訪問它!


現在,我在ClientManager的方法之一中包含以下代碼:

FKEntityList.Add(new PortalEntities().Set<FKEntity>().Find(FKEntity_id));

這是我收到錯誤消息的地方:

  • 無法定義兩個對象之間的關系,因為它們已附加到不同的ObjectContext對象。

FKEntityList是使用repo的find方法構建的,該方法本身使用EFGenRepocontext EFGenRepo


我這樣使用autofac和已注冊的PortalEntities ,因此可以將其注入控制器中: cb.RegisterType<PortalEntities>().AsSelf().InstancePerRequest();

但是,在我的方法中,我使用了new PortalEntites() ,並且必須以某種方式將其注冊為PortalEntities類型。 但是我無法正常工作。 我已經嘗試過下面的代碼:

cb.RegisterInstance(new PortalEntities()).AsSelf().SingleInstance();

有人知道如何設置嗎?

在ClientManager類中,不應創建(甚至使用)PortalEntities類。 將數據庫查詢邏輯移到已經具有PortalEntities實例的存儲庫中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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