2012-06-18 24 views
8

Khá mới đối với Asp.Net MVC Tôi đang theo ví dụ SportsStore từ sách Pro ASP.Net MVC 3 Framework.Thực tiễn tốt là sử dụng kho lưu trữ chung hay mỗi thực thể có kho lưu trữ riêng của mình?

Tất cả đều ổn, nhưng bây giờ tôi bắt đầu nâng cao ví dụ cơ bản với một số thực thể bổ sung. Đó là cách tiếp cận tốt hơn: - mỗi thực thể có kho lưu trữ riêng của mình (có vẻ như mã trùng lặp) hoặc - nên có kho lưu trữ chung cho các thực thể tương tự không?

Có bất kỳ dự án nào khác ngoài đó có cùng kiến ​​trúc là các mẫu hoàn chỉnh hơn không?

+0

Hãy nhìn vào http://stackoverflow.com/a/1231473/105445 này –

+1

thể trùng lặp của [Advantage của việc tạo ra một kho lưu trữ chung vs kho cụ thể cho từng đối tượng ?] (http://stackoverflow.com/questions/1230571/advantage-of-creating-a-generic-repository-vs-specific-repository-for-each-obje) – FoamyGuy

+0

Đã xem các câu hỏi như thế này nhiều lần. –

Trả lời

2

Đây là nội dung được tranh luận nhiều trên internet. Nếu bạn sử dụng tìm kiếm ở đây tại SO bạn có thể tìm thấy nhiều chủ đề về nó. Cuối cùng chỉ là đi đến sở thích cá nhân của bạn. Hãy thử cả hai tùy chọn và quyết định tùy chọn nào là tốt nhất cho bạn.

Tôi bắt đầu tạo kho lưu trữ riêng cho mọi thực thể, nhưng cảm thấy như tải công việc không cần thiết (và nhiều bản sao mã), vì vậy gần đây tôi đã bắt đầu sử dụng kho chung, và điều đó hoàn toàn phù hợp với tôi.

Xem chủ đề này để biết thêm thông tin: Advantage of creating a generic repository vs. specific repository for each object?

+0

Với các kho lưu trữ riêng biệt, làm thế nào để bạn tham gia giữa các thực thể hoặc thực hiện kết hợp trên các kết nối? – usr

+1

Bạn chỉ có thể thực hiện các phép nối trong kho lưu trữ nếu muốn. Vì vậy, ví dụ: nếu bạn có một UserRepository và BlogPostRepository, bạn có thể tạo một phương thức 'GetBlogPostsByUserId' trong BlogPostRepository của bạn, và tham gia các bảng 'Người dùng' và 'BlogPost' trong phương thức đó. Nhưng đó chỉ là một cách để làm điều đó, có rất nhiều cách khác. –

+1

Bạn cũng có thể sử dụng UnitOfWork –

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