Ми використовуємо купу окремих класів з суфіксом, -repository
щоб отримати дані з бази даних; для кожної таблиці своє сховище.
Наприклад, у нас є customerrepository
клас, який має всі види методів пошуку клієнтів, і vacancyrepository
який має всілякі методи пошуку вакансій.
У мене є два питання щодо такого способу поведінки:
Як щодо отримання даних, які охоплюють кілька таблиць? Наприклад, у мене є екран, на якому показані всі клієнти, які ще не створили вакансію. Чи можуть
customerrepository
використовувати методи зvacancyrespository
, або обидва сховища повертають результати і чи є клас вище в ієрархії (назвемо це аdataservice
), який отримує результати з обох сховищ та об'єднує їх у 1 результат?наскільки логіка може обробляти таке сховище?
Я думаю, що нормально реалізовувати "де active == true" у сховищі, щоб отримати лише активні записи, чи навіть ця проста логіка повинна оброблятися класом вище в ієрархії (назвемо це adataservice
)?
Приклад, з яким я стикався зараз, такий:
У нас є список питань, який містить одне або більше запитань.
Питання може мати результат, який міститься в окремій таблиці.
Отже, коли ви хочете отримати загальний результат списку питань, вам доведеться поєднувати дані з questionlist
таблиці, таблиці запитань та questionstatus
таблиці.
Зараз у нас є 3 різних сховища для цих таблиць.
Якщо я запитаю, questionlistrepository
який це сумарний результат для списку №12, він повинен був би отримати дані з двох інших сховищ, і, отже, мати певну логіку, чи це дозволено?
Або є questionlistdataservice
хто знає, які сховища використовувати?
І ще одне: наші сховища можуть призвести до IQueryable
того, що служба дзвінків може легко поєднувати результати, але як щодо того, коли це не так, я не думаю, що це гарна ідея отримати весь вміст усіх трьох таблиць з база даних.