如何使用EF(DB优先)正确实现DI?

时间:2013-02-15 10:18:20

标签: c# asp.net-mvc architecture dependency-injection ninject

我正在尝试在我的项目中实现DI(使用Ninject,如果它确实重要)。现在我有QuestionController,它正在使用QuestionRepository

    private readonly IQuestionRepository _questionRepository;

    public QuestionsController(IQuestionRepository questionRepository)
    {
        _questionRepository = questionRepository;
    }

这没关系,但我的QuestionRepository需要AskEntities个对象,其中AskEntities是由EF设计师生成的类。所以现在QuestionRepository我有:

 private AskEntities Db; 

如何实现那里没有类而不是接口(有点像IAskEntities)?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

  

但我的QuestionRepository需要AskEntities对象,其中AskEntities是由EF设计师生成的类。所以现在在QuestionRepository中我有private AskEntities Db;如何实现那里没有类而不是接口(有些像IAskEntities)?

好。我假设您的AskEntities对象是您的DbContext?由于您的存储库实现特定于Entity Framework,因此我认为没有理由从存储库类中抽象出该依赖项。

您当然可以发送DbContext基类并使用context.Set<Question>来访问不同的集合。但是这会给你带来什么好处呢?您通常只编写存储库类的集成测试,因此无需创建另一个抽象。