2012-03-01 3 views
0

私は失われているので、いくつかの助けが必要です。リポジトリDbContextとMyDBContext

私はEF 4.2とasp.net mvc3を使用しています。私はDbContextで動作するGeneric ReposiotryをIoCを使って作成しました.DbContextをMyDBContextとして初期化するように設定しました。これまでのところすべて正常に動作します。

リポジトリクラスにDbContextデータメンバーを使用しているため、MyDbContextとは異なるAPIを使用しています。私はそれを正しくしていますか?

おかげ

+1

「MyDBContext」とは何ですか?また、リポジトリで必要としない特殊なタイプの理由は何ですか?あなたのリポジトリがあなたのタイプを使わないのはなぜですか? –

+0

@LadislavMrnka MyDBContextは、DbContextを拡張するEF 4.2が提供するクラスです。そして、DbContextは、私が最後に使用したいくつかのpplが奨励したものです。何か問題がありますか? – afr0

+0

いいえ、MyDBContextはマッピング定義にのみ使用されます。 –

答えて

1

イムは、作業パターンやサービスの単位を使用していない場合は、ここにあなたのオブジェクトグラフは、あなたのDIコンテナによって構築されている

 

public class YourController : Controller 
{ 
    private ICustomerRepository _repository; 
    public YourController(ICustomerRepository repository) 
    { 
    _repository = repository 
    } 

... 
} 

public class CustomerRepository : ICustomerRepository 
{ 
    private IContext _context; 
    public CustomerRepository(IContext context) 
    { 
     _context = context; 
    } 

} 
 

私はそれを行う方法です。あなたのコンテキストが各リクエストで処理されていることを確認してください。これは、どのDIコンテナを使用するかによって異なります。

+0

また、汎用リポジトリで動作するサービスを使用しているコントローラ用の基本クラスもあります。これが私をより良く導くのを助けてくれることを願っています。 – afr0

+0

なぜインターフェイスではなく具体的​​な実装(DbContext)を注入するのですか?テストはそうしたやり方は少し難しいと思われる。あなたはサービスを注入していますか、あるいはあなたのコンテキストをサービスに渡していますか?個人的には、コントローラに注入し、すべての依存関係のオブジェクトグラフを作成させるのが好きです。サービスが必要な場合は、インターフェースを使用してコンテキストを挿入します。具体的な実装をインジェクトすることができますが(実際に行っています)、これらのコントローラーのモック/テストが少し難しくなります。 –

関連する問題