3
我不确定这是否可行,但我想要一个可以使用实体框架加载和保存的类,该实体框架还使用Ninject在运行时用具体实现填充接口。可以在EntityFramework实体对象上使用Ninject吗?
我开始用这样的构造:
public FancyObject(ICatProvider kitty)
{
this.kitty = kitty;
}
这工作尽可能Ninject推移,我们得到一个猫 - 和它的作品保存使用实体框架的实体SQLServer的。但是,尝试加载实体时失败,因为实体框架需要无参数的构造函数。
于是,我把它放在一个属性是这样的:
[Inject]
public ICatProvider kitty { get; set; }
public FancyObject()
{
}
这可以从数据库载入,但小鹰始终为空。
所有我在绑定是:
kernel.Bind<ICatProvider>().To<FancyFileBasedCat>();
我猜这是因为我使用实体框架来创建的实体,因此Ninject没有得到一看
。我在这里错过了一些明显的东西吗?有没有一个很好的方法来做到这一点?
是的,它可能不是最优雅的设计 - 需要手动注入每个实例感觉很hacky - 而这仅仅是由于臭的依赖性所必需的。我认为你是对的 - 将其注入更高级别,然后根据需要将它传递给实体可能是更好的解决方案。谢谢。 – Kaine 2013-04-30 15:29:30