Я занимаюсь разработкой веб-приложения для некоммерческих организаций. (Приложение регистрирует рабочих за день, отслеживает их личную информацию, принимает рабочие задания и предоставляет интерфейс для назначения зарегистрированных рабочих на рабочее задание) У меня около 8 таблиц в SQL Server. Я начал с книги Сандерсона о MVC и попытался реализовать шаблоны, которые он рекомендует: IoC, разделение интересов, DI ...
Вот мои определения контекста:
public DbSet<Person> Persons { get; set; }
public DbSet<Worker> Workers { get; set; } //All workers are persons, but not all persons are workers.
public DbSet<WorkerSignin> WorkerSignins { get; set; } //1 entry per worker, per day (barcode scanner)
public DbSet<Image> Images { get; set; }
public DbSet<Employer> Employers { get; set; } //1 employer has many work orders
public DbSet<WorkOrder> WorkOrders { get; set; } //1 work order has many work assignments
public DbSet<WorkAssignment> WorkAssignments { get; set; } //1 assignment -> space for worker
public DbSet<WorkerRequest> WorkerRequests { get; set; }
public DbSet<Lookup> Lookups { get; set; } //configuration, dropdowns, other stuff
Приложение находилось в производстве уже несколько месяцев - у некоммерческих организаций есть временные параметры ввода прошлых заказов и данных для целей отчетности, поэтому объем записей быстро растет. Они сталкиваются с некоторыми узкими местами в производительности, и когда я их исправлю, я бы хотел исправить их на нужном слое.
В нескольких случаях мне нужно отображать информацию из нескольких таблиц. Примеры:
- Отображение работника извлекает имя и фамилию из Персоны (с использованием коллекций EF)
- Дисплей WorkerSignin извлекает из Worker and Person
- Отображение получения WorkAssignment из WorkOrder
Итак, в случае № 1, лучше ли, чтобы моя служба «Работник» работала в службе «Персона», или хранилище «Работник» должно работать в хранилище «Персона»? Или я должен создать новый репозиторий, такой как CompleteWorker, который объединяет информацию из таблицы Person и Worker?