1

私のコントローラーは、ビューに返されるデータを取得する必要があります。リポジトリに渡す接続をどこで開く必要がありますか? ここに例があります。これは私のコントローラーの一部です。

using (var connection = this.GetActiveConnection())
{
    var repository = new RefRepository(connection);
    var codes = repository.GetPoACodes();    
}

コントローラーで接続を開くのは悪い習慣ですか? コントローラー経由で渡さない場合、リポジトリへの接続をどこに渡す必要がありますか?

4

2 に答える 2

4

実際には、リポジトリは接続自体を処理する必要があります。これはコントローラーの問題ではありません。コントローラークラスは痩せたままにしておく必要があり、太るとコード臭がします。

依存性注入フレームワーク (Ninject、StructureMap など) を使用してこれらの依存関係を配線し、DbContext または Session および SessionFactory (EF または NHibernate)、トランザクション、または作業単位パターンを処理できる場合は、非常に良い方法です。ここまで行きたい場合は、例外処理とロギング。

Visual Studio を使用している場合、プロジェクト テンプレートには、リポジトリも作成するオプションがあり、サンプル プロジェクトを作成し、コードを読み、コードがどのように構成されているかを学習できます。

この記事の Web API ヘッダーで、その方法を確認できます。

于 2012-12-03T17:07:50.893 に答える
1

いいえ、コントローラーでデータベース接続を開くべきではありません。

コントローラーは、データベーススキーマとは異なる「ドメインモデル」と通信する必要があります。

あなたの場合、リポジトリで処理する必要があるかもしれません。

さらに、たとえば Entity Framework や NHibernate を使用している場合は、それらの問題を処理させたほうがよいでしょう。

于 2012-12-03T17:21:22.213 に答える