Chúng tôi đang sử dụng một loạt các lớp riêng biệt được thêm -repositoryvào để lấy dữ liệu từ cơ sở dữ liệu; cho mỗi bảng kho lưu trữ riêng của nó.
Ví dụ, chúng ta có một customerrepositorylớp có tất cả các loại phương thức để lấy khách hàng và một lớp vacancyrepositorycó tất cả các loại phương thức để lấy chỗ trống.
Tôi có hai câu hỏi về cách làm này:
Làm thế nào về việc lấy dữ liệu kéo dài nhiều bảng? Chẳng hạn, tôi có một màn hình hiển thị tất cả các khách hàng chưa tạo chỗ trống. Một
customerrepositoryphương thức sử dụng từvacancyrespository, hoặc cả hai kho lưu trữ đều trả về kết quả và có một lớp nào cao hơn trong hệ thống phân cấp (hãy đặt tên là adataservice) để lấy kết quả từ cả hai kho lưu trữ và kết hợp chúng thành 1 kết quả không?một kho lưu trữ như vậy có thể xử lý bao nhiêu logic?
Tôi nghĩ sẽ ổn khi triển khai 'where active == true' trong kho lưu trữ để chỉ truy xuất các bản ghi hoạt động hoặc thậm chí logic đơn giản đó sẽ được xử lý bởi một lớp cao hơn trong hệ thống phân cấp (hãy đặt tên là adataservice)?
Ví dụ tôi đang chạy đến bây giờ là ví dụ này:
Chúng tôi có một danh sách câu hỏi, trong đó có một hoặc nhiều câu hỏi.
Câu hỏi có thể có một kết quả, được giữ trong một bảng riêng biệt.
Vì vậy, khi bạn muốn lấy tổng số kết quả của danh sách câu hỏi, bạn phải kết hợp dữ liệu từ questionlistbảng, bảng câu hỏi và questionstatusbảng.
Ngay bây giờ chúng tôi có 3 kho khác nhau cho các bảng này.
Nếu tôi hỏi questionlistrepositorytổng số kết quả của danh sách số 12, thì nó sẽ phải lấy dữ liệu từ hai kho lưu trữ khác và do đó có một số logic trong đó, điều đó có được phép không?
Hoặc có một questionlistdataservicetrong đó biết những kho lưu trữ để sử dụng?
Một điều nữa: kho lưu trữ của chúng tôi có thể dẫn IQueryableđến một dịch vụ gọi điện có thể dễ dàng kết hợp các kết quả, nhưng khi đó không phải là trường hợp này, tôi không nghĩ nên lấy tất cả nội dung của cả ba bảng từ cơ sở dữ liệu.