0

プロジェクトに DI を実装しようとしています (問題がある場合は Ninject を使用します)。今のところQuestionController、私は使用していQuestionRepositoryます:

    private readonly IQuestionRepository _questionRepository;

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

これは問題ありませんが、私QuestionRepositoryが必要とするAskEntitiesオブジェクトは、AskEntitiesEF デザイナーによって生成されたクラスです。だから今QuestionRepository私は持っています:

 private AskEntities Db; 

クラスではなくインターフェース(のようなものIAskEntities)を実装する方法は?

助けてくれてありがとう。

4

1 に答える 1

2

しかし、私のQuestionRepositoryにはAskEntitiesオブジェクトが必要です。ここで、AskEntitiesはEFデザイナーによって生成されたクラスです。だから今QuestionRepositoryに私はprivate AskEntities Db;クラスではなくインターフェース(IAskEntitiesのようなもの)を実装する方法がありますか?

上手。あなたのAskEntitiesオブジェクトはあなたのものだと思いますDbContextか?リポジトリの実装はEntityFrameworkに固有であるため、リポジトリクラスからその依存関係を抽象化する理由はありません。

DbContextもちろん、基本クラスを送信して、context.Set<Question>さまざまなセットにアクセスするために使用することもできます。しかし、それはあなたにどのような利点をもたらしますか?通常、リポジトリクラスの統合テストのみを作成するため、別の抽象化を作成する必要はありません。

于 2013-02-18T09:12:23.743 に答える