2009-03-21 41 views
7

Tôi đang sử dụng Mẫu Kho lưu trữ (ví dụ như các ví dụ trong trang http://www.asp.net/mvc) trong ứng dụng ASP.NET MVC. Tôi có hai kho, một cái gọi là CategoryRepository, còn gọi là ProductRepository. Tôi cũng sử dụng hai dịch vụ, CategoryService và ProductService để xác thực và gọi các phương thức kho lưu trữ. Tôi cần một danh sách các loại trong ProductService, một phương thức trả về một loại đã được triển khai trong CategoryRepository. Câu hỏi của tôi là, đó là cách chính xác để gọi phương thức ListCategories tồn tại trong CategoryRepository từ ProductService? Tôi không muốn triển khai phương thức ListCategories khác trong ProductRepository (triết lý DRY). Cảm ơn.Phương thức gọi giữa các kho lưu trữ - Mẫu Kho lưu trữ

Trả lời

4

Tôi khuyên bạn nên cuộn các kho lưu trữ tương tự vào một dịch vụ. Vì vậy, nếu bạn đang tạo ra một ứng dụng thương mại điện tử cuộn lên ProductRepository, CategoryRepository vv vào một cái gì đó như CatalogService và có nó lưu trữ tất cả các kho có liên quan.

+1

+1. Nói chung điều này lá bạn với các dịch vụ được chia thành kinh doanh, không phải thực thể, dòng. –

+3

Vậy điều gì xảy ra khi Dịch vụ Catalog sử dụng ProductRepo để cập nhật một sản phẩm và CategoryRepo để cập nhật một loại trong một phương thức dịch vụ? Điều đó có nghĩa là các thay đổi ProductRepo được thực hiện trong một giao dịch và các thay đổi CategoryRepo được thực hiện trong một giao dịch khác không? Tôi luôn nghĩ rằng các hoạt động repo được tách rời trừ khi bạn cho phép ProductRepo thay đổi các danh mục. Mọi người làm gì trong thế giới thực? – IanT8

3

Một tùy chọn là cung cấp lớp ProductService một thể hiện của CategoryService.

public class ProductService { 
    ICategoryService _categoryService = null; 

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

Sau đó, bạn có thể truy cập danh sách danh mục từ ProductService mà không phải thiết lập khớp nối trực tiếp với bất kỳ triển khai CategoryService cụ thể nào.

Các vấn đề liên quan