2016-04-12 6 views
3

Asp.NetコアにDbContextを挿入します。具体的なタイプまたはインタフェース?私はEntity FrameworkのDbContextを注入していますAsp.Netコアプロジェクトで

public MessageRepository(MyDbContext context) { 
} 

と設定は次のとおりです。

services 
    .AddEntityFramework() 
    .AddSqlServer() 
    .AddDbContext<Context>(x => x.UseSqlServer(connectionString); 

私はインターフェイス、IMyDbContextを作成し、代わりにそれを注入するべきでしょうか?私は具体的な種類、MyDbContextを参照してくださいすべてのASP.NETコアの例では

public class MyDbContext : DbContext, IMyDbContext { } 

public MessageRepository(IMyDbContext context) { 
} 

は、注入されているといないインターフェイス...

私は何のオプションを選ぶべきなのでしょうか?

+0

ある時点では、抽象的なことができないので(あるいはあなたはかなりの時間をかけてゆくため)、何らかの決定を下す必要があります。私はEFがJson.Netのような私のインフラストラクチャコンポーネントの一部だと考えています。私がEFから離れなければならない場合、これは10年後になると確信しています。 – Thomas

答えて

2

私たちは、ユニットテストと統合テストを模擬するのが簡単なので、常にインターフェイスを注入しています。

  1. MessageRepositoryコンストラクタの署名を変更しますか?それは具体的なタイプに依存します。
  2. コードのテストを記述していますか? andを使用すると、データベースコンテキストを模擬するのが簡単になります。

あなたは上記の一つ以上に「ノー」と答えたした場合、具体的な種類を注入。それ以外の場合は、インタフェースを挿入します。

関連する問題