3

いくつかのリポジトリ パターンの例を調べましたが、データベース アクセスがどこで行われるかを判断できないようです。私が見ているすべての例は、Entity Framework の使用を想定しているように見えますが、これは私が行っている小さなプロジェクトの範囲外です。5 つほどのモデル/コントローラーを持つ WebAPI サービスを作成しようとしています。

基本的に、私の質問は次のとおりです。データベース呼び出しをプロジェクトに統合するにはどうすればよいですか?どこで? コントローラーから直接 DAL メソッドを呼び出す必要がありますが、これはアンチパターンに見えますか? コントローラーのデータベース コンテキストは、例で EF を使用して行われる方法ですが、プロパティまたはコンストラクターを介してコントローラーに実際に渡される場所がわかりません。

編集:

たぶん、私は十分に明確ではありませんでした。申し訳ありません。私はEntity Frameworkを使用していません。EFの使用には興味がありません。プロジェクトのどの時点でも使用するつもりはありません。

4

2 に答える 2

1

コントローラー内で Entity Framework データを使用する場合は、Inversion of Control コンテナー フレームワークを使用してコンストラクターに渡すことができます。フレームワークは、データ コンテキストのインスタンスを自動的に作成し、作成したばかりのデータ コンテキストを渡す WebApi コントローラーのインスタンスを自動的に作成します。

これを可能にするフレームワークの例を次に示します。

http://nuget.org/packages/Autofac.WebApi/

https://code.google.com/p/autofac/w/list

編集1:

Entity Framework を使用したくない場合は、同じアプローチを取りますが、データ コンテキストを WebApi コントローラーに渡す代わりに、ADO.NET 接続を渡すことができます。

編集2:

Unit of Work と Repository のパターンを調べる必要があります。Unit Of Work は、データベース接続/データ コンテキストなどの管理を担当し、リポジトリのインスタンスも作成します。各リポジトリは、各テーブル内のエンティティと、これらのエンティティの読み取り/更新方法を管理します。

私の最初の応答が適用されますが、データ コンテキストの代わりに Unit of Work クラスのインスタンスになります。

これらのパターンの良い例と、stackoverflow およびインターネットでの Autofac の使用例が多数あるため、ここでは繰り返しません。Autofac について言及していますが、ASP.NET WebApi をサポートする任意の IoC コンテナーを使用できます。

于 2013-06-19T05:13:23.277 に答える