Chúng tôi đang sử dụng một loạt các lớp riêng biệt được thêm -repository
và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 customerrepository
lớp có tất cả các loại phương thức để lấy khách hàng và một lớp vacancyrepository
có 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
customerrepository
phươ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ừ questionlist
bảng, bảng câu hỏi và questionstatus
bả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 questionlistrepository
tổ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 questionlistdataservice
trong đó 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.