Tôi đang xây dựng một ứng dụng MVC3, cố gắng sử dụng IoC và constructor injection. Cơ sở dữ liệu của tôi có (cho đến nay) khoảng 50 bảng. Tôi đang sử dụng mẫu EF4 (w/POCO T4) cho mã DAC của mình. Tôi đang sử dụng mẫu kho lưu trữ, và mỗi bảng có kho lưu trữ riêng của nó. Các lớp dịch vụ của tôi trong lớp dịch vụ của tôi được tiêm w/các kho lưu trữ này.Thiết kế kho lưu trữ cho DI (constructor injection) cho lớp dịch vụ
Sự cố: Các lớp dịch vụ của tôi đang phát triển về số lượng kho mà họ cần. Trong một số trường hợp, tôi đang tiếp cận 10 kho, và nó bắt đầu có mùi.
Có cách tiếp cận chung để thiết kế kho và các lớp dịch vụ sao cho các dịch vụ không yêu cầu nhiều kho lưu trữ không?
Dưới đây là suy nghĩ của tôi, tôi chỉ là không chắc chắn cái nào là đúng:
1) Đây là dấu hiệu tôi nên xem xét kết hợp/nhóm kho của tôi vào bộ phận liên quan của bảng, giảm số lượng hoặc kho phụ thuộc cho mỗi lớp dịch vụ. Tuy nhiên, vấn đề với cách tiếp cận này là nó sẽ sưng lên và làm phức tạp các kho lưu trữ của tôi, và sẽ giữ cho tôi không thể sử dụng một giao diện chung cho tất cả các kho lưu trữ (các phương thức chuẩn để truy xuất/cập nhật dữ liệu).
2) Đây là một dấu hiệu tôi nên cân nhắc việc chia nhỏ các dịch vụ của mình thành các nhóm dựa trên các kho lưu trữ của tôi (bảng). Vấn đề với điều này là một số phương pháp dịch vụ của tôi chia sẻ việc triển khai phổ biến và phá vỡ các phương thức này trên các lớp có thể làm phức tạp các phụ thuộc của tôi.
3) Đây là dấu hiệu cho thấy tôi không biết mình đang làm gì và có điều gì đó sai về cơ bản mà tôi thậm chí không thể thấy.
CẬP NHẬT: Để biết cách triển khai EF4 và kho lưu trữ, hãy xem this sample app trên codeplex (Tôi đã sử dụng version 1). Tuy nhiên, nhìn vào một số ý kiến ở đó (và ở đây), có vẻ như tôi cần phải đọc nhiều hơn một chút để đảm bảo đây là tuyến đường tôi muốn thực hiện - có vẻ như nó không thể như vậy.
EF4 hoặc 4.1? Mẫu kho lưu trữ và đơn vị công việc được xây dựng trong ngữ cảnh trong mẫu 'DbContext' trong 4.1 (tốt, có thể với tinh chỉnh một lớp cho mẫu ...) –
EF4 (không phải 4.1). Tôi có nên xem xét chuyển sang 4.1? Làm cách nào để di chuyển? –
Bạn sẽ cần phải tạo ra mẫu tạo mã mẫu/mô hình cũ và tạo mẫu mới, nhưng tên lớp sẽ giống nhau. Phần đó chỉ là một vài cú nhấp chuột. Một số phương thức cơ sở trong ngữ cảnh của bạn (và có thể trên các tập dữ liệu) sẽ bị phá vỡ, và nó phụ thuộc vào số lượng các phương thức mà bạn sử dụng trên tác động lớn đến mức nào. Tôi tin rằng những người đó chủ yếu sẽ là một thay đổi văn bản, thay vì phải trao đổi ra nhiều logic. –