[英]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
。 请记住,由于repo
的context
道具是私有的,所以我无法访问它!
现在,我在ClientManager
的方法之一中包含以下代码:
FKEntityList.Add(new PortalEntities().Set<FKEntity>().Find(FKEntity_id));
这是我收到错误消息的地方:
FKEntityList
是使用repo
的find方法构建的,该方法本身使用EFGenRepo
的context
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.