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