質問: Asp.Netコアプロジェクトで、私はEntity Framework DbContextをインジェクトしています: ``` public MessageRepository(MyDbContext context) { } ``` そして構成は次のとおりです。 ``` services .AddEntityFramework() .AddSqlServer() .AddDbContext(x => x.UseSqlServer(connectionString); ``` インターフェイス、IMyDbContextを作成し、代わりにそれを注入する必要がありますか? ``` public class MyDbContext : DbContext, IMyDbContext { } public MessageRepository(IMyDbContext context) { } ``` すべてのASP.NETコアの例では、具体的な型MyDbContextが注入されていて、インタフェースではないことがわかります... 私はどのような選択肢を選ぶべきですか?
回答: ユニットテストと統合テストを模擬する方が簡単なので、私たちは常にインターフェイスを注入しています。 1. `MessageRepository`コンストラクタの署名を変更しますか?それは具体的なタイプに依存します。 2. あなたのコードのテストを書いていますか? andを使用すると、データベースコンテキストを模擬するのが簡単になります。 上記のいずれかに「いいえ」と答えた場合は、具体的なタイプを注入してください。それ以外の場合は、インタフェースを挿入します。