Как правильно проектировать сервисы с EF Core? - PullRequest
0 голосов
/ 20 апреля 2020

Я разрабатываю приложение в C# с использованием EF Core. Я пытаюсь придерживаться MVVM и пытаюсь привести все логи c и взаимодействие с базой данных в сервисы. Однако при синхронизации данных между несколькими службами возникла проблема. Если вы создаете DbContext для каждого вызова, аналогично:

    public ICollection<Entity> GetEntities()
    {
        using var context = new DbContext();
        return context.Entities
            .ToList();
    }

Тогда возникает проблема: поскольку служба возвращает связанные данные - список значений из справочной таблицы (для выбора из раскрывающегося списка) Например,) и текущее значение для записи, данные, полученные из разных DbContext, не равны (это разные экземпляры, но с одинаковым идентификатором). Что заставляет вас использовать один DbContext для всего сервиса. Но если вам нужно связать данные, полученные от двух разных сервисов, возникает та же проблема .... В этом случае вам придется создать глобальный DbContext или дублировать функциональность одного сервиса в другом, что также не является хорошей практикой. , Я вижу два способа решения этой проблемы:

  1. перегрузить сравнение всех элементов данных при сравнении по идентификатору.
  2. каким-то образом внедрить один сервис в другой, чтобы он использовал родительский DbContext (я не уверен насчет этого параметра)

Какой (или ни одному?) Я должен следовать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...