MVC 5 Webアプリケーションの自動スキャナーのコントローラーでDependency Injectionを使用する方法を学習しようとしています。私が "Dependency Injection"と "Unity"についてのチュートリアルを見つけている間、私が見てきた例は、より多様な世界の多様性であり、実際にコントローラのデータベースコンテキストを扱うことは決してありません。リポジトリなしのDbContextの依存性注入
私が言っていることのより良い例を得るために、ここには私が持っているものと私がしようとしているもののコードスニペットがあります。
Visual Studioを使用して、 "Entity Frameworkを使用してビューを持つ"コントローラを自動スキャナーで作成すると、これは通常作成されるものです。
public class TideUploadsController : Controller
{
// This is the EF Database context placed by the auto-scaffolder
private AzMeritContext db = new AzMeritContext();
[HttpGet]
public ActionResult Index()
{
return View(db.TideUploads.ToList());
}
/* further CRUD ActionResults not shown */
}
}
私は依存性の注入を使用するように、これまでに読んだものから、私の代わりに、クラスのインターフェースを呼び出すコンストラクタを使用する必要があります。私は、Entity Frameworkの周りのリポジトリをラップすることについてのさまざまなレビューを読んだ。リポジトリを使用せずにこれを実行できるかどうかを確認したいと思います。
auto-scaffolderによってコードに配置されたDbContextの代わりに使用する既存のインターフェイスはありますか?
// This is the EF Database context placed by the auto-scaffolder
private AzMeritContext db = new AzMeritContext();
public TideUploadsController(/* what Interface goes here? */)
{
//db = ?
}
これは、本当にEntity Framework dbContextの周りにリポジトリをラップする必要がある状況ですか?
は、私は本を読み、チュートリアルやビデオを検索、最後の数週間を費やしている、と私はまだのようなものを示し、ステップバイステップの例を見ていない:
- ステップ1:コントローラを取りますあなただけの自動足場
- ステップ2:これを行う...
- ステップn:そして今あなたのコントローラーは密接に結合されているのではなく、データベースのコンテキストと疎結合しています。
リポジトリのすべての議論について、私がまだ見ている欠点は、余分なタイピングがたくさんあることです。私はジェネリックリポジトリインタフェースの例を見つけましたが、ジェネリックリポジトリをまだ見ていないので、コンストラクタにコンテキストとモデルのペアを挿入して、同じ動詞(get、insertなど)を使用できます。本当に汎用リポジトリに関するアイデアはありますか? –
おそらく、 "ジェネリックリポジトリ"を作成してコンストラクタにDBContextを注入する必要があります。このアイデアは私にとっては確かです。http://blog.gauffin.org/2013/01/repository-pattern-done-right/任意のデータベースアクセスをラップするために記述して入力するコードがたくさんあるとします –