Для тех пор, как я помню, я использую классический 3 слоя шаблон проектирования с Dependency Injection:Рекомендации по выбору Design Pattern
Презентация -> Сервис класса -> Repository, и я всегда в конечном итоге с Одна и та же проблема: несколько крупных классов обслуживания, которые имеют слишком большую ответственность и избыточность кода.
Мой разум был отравлен этим шаблоном дизайна после всех этих лет, поэтому мне нужно немного советов, чтобы перейти к чему-то новому. Я читал о других шаблонах дизайна, но есть так много вариантов, и я не вижу перехода от шаблона репозитория к одному из многих других шаблонов.
Простой пример:
public void CreateMachine(Machine machine)
{
this.repository.Insert(machine);
}
public void StartMachine(Guid machineid)
{
Machine machine = repository.GetMachine(machineId);
machine.Started = true;
repository.UpdateMachine(machine);
MachineEvent mEvent = new MachineEvent(machineId);
mEvent.MachineId = machineId;
mEvent.EventType = MachineEventEnum.MachineStarted;
this.eventRepository.Insert(mEvent);
If (machine.IsBigMachine == true)
{
// Do something more
}
// many more objects to create or update...
}
Класс MachineService будет в конечном итоге, как класс SuperService, имеющий ответственность за создание и обновление много различных объектов из моей модели домена. Потому что, когда что-то происходит с объектом Machine, тогда должно произойти много других вещей. У меня обычно есть много классов обслуживания, но из-за DI я не могу иметь ссылку между классами обслуживания. Это создает избыточность кода. Любые советы для наркомана-репозитория?
EDIT: Я закончил работу с единицей. См. Мое решение здесь: https://stackoverflow.com/questions/41548169/rate-my-implementation-of-unif-of-work-with-repository-pattern-and-ef-core
В чем проблема, которую вы пытаетесь решить? –
RIP ваша реализация. – niksofteng