繁体   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