【问题标题】:How to correctly implement DI using EF (DB first)?如何使用 EF(DB first)正确实现 DI?
【发布时间】:2023-03-24 14:10:01
【问题描述】:

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

    private readonly IQuestionRepository _questionRepository;

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

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

 private AskEntities Db; 

如何实现不是类而是接口(类似于IAskEntities)?

感谢您的帮助。

【问题讨论】:

  • 请重新表述您的问题。不清楚你想知道什么。

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


【解决方案1】:

但我的 QuestionRepository 需要 AskEntities 对象,其中 AskEntities 是 EF 设计器生成的类。所以现在在 QuestionRepository 我有 private AskEntities Db; 如何实现不是类而是接口(类似于 IAskEntities)?

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-18
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2011-10-22
    • 1970-01-01
    相关资源
    最近更新 更多