Я разрабатываю приложение в C# с использованием EF Core. Я пытаюсь придерживаться MVVM и пытаюсь привести все логи c и взаимодействие с базой данных в сервисы. Однако при синхронизации данных между несколькими службами возникла проблема. Если вы создаете DbContext для каждого вызова, аналогично:
public ICollection<Entity> GetEntities()
{
using var context = new DbContext();
return context.Entities
.ToList();
}
Тогда возникает проблема: поскольку служба возвращает связанные данные - список значений из справочной таблицы (для выбора из раскрывающегося списка) Например,) и текущее значение для записи, данные, полученные из разных DbContext, не равны (это разные экземпляры, но с одинаковым идентификатором). Что заставляет вас использовать один DbContext для всего сервиса. Но если вам нужно связать данные, полученные от двух разных сервисов, возникает та же проблема .... В этом случае вам придется создать глобальный DbContext или дублировать функциональность одного сервиса в другом, что также не является хорошей практикой. , Я вижу два способа решения этой проблемы:
- перегрузить сравнение всех элементов данных при сравнении по идентификатору.
- каким-то образом внедрить один сервис в другой, чтобы он использовал родительский DbContext (я не уверен насчет этого параметра)
Какой (или ни одному?) Я должен следовать?