2009-03-21 5 views
7

。私はCategoryRepositoryと呼ばれるものとProductRepositoryという2つのリポジトリを持っています。私は、CategoryServiceとProductServiceの2つのサービスを使って、リポジトリメソッドを検証し呼び出します。 ProductServiceにカテゴリのリストが必要です。これは、CategoryRepositoryで既に実装されているメソッドを返すメソッドです。私の質問は、ProductServiceのCategoryRepositoryに存在するListCategoriesメソッドを呼び出す正しい方法ですか?私はProductRepository(DRY哲学)に別のListCategoriesメソッドを実装したくありません。ありがとう。呼び出し方法 - 私はASP.NET MVCアプリケーションで(<a href="http://www.asp.net/mvc" rel="noreferrer">http://www.asp.net/mvc</a>サイトの例のように)リポジトリパターンを使用しているリポジトリパターン

答えて

4

同様のリポジトリを1つのサービスに展開することをお勧めします。したがって、電子商取引アプリケーションを作成する場合は、ProductRepository、CategoryRepositoryなどをCatalogServiceのようにロールアップし、関連するすべてのリポジトリをホストします。

+1

+1。一般的に、これはエンティティではなくビジネスで分割されたサービスを残します。 –

+3

カタログサービスがProductRepoを使用して製品を更新し、CategoryRepoが1つのサービスメソッドのカテゴリを更新するとどうなりますか?つまり、ProductRepoの変更は1つのトランザクションで行われ、CategoryRepoの変更は別のトランザクションで行われますか? ProductRepoにカテゴリを変更させない限り、Repo操作は個別であると私はいつも思っていました。現実世界で人々は何をしていますか? – IanT8

3

1つのオプションは、ProductServiceクラスにCategoryServiceのインスタンスを提供することです。

public class ProductService { 
    ICategoryService _categoryService = null; 

    public ProductService(ICategoryService categoryService) { 
     _categoryService = categoryService; 
    } 
} 

次に、特定のCategoryService実装への直接結合を確立することなく、ProductServiceからカテゴリリストにアクセスできます。

関連する問題