Проблема с сохранением данных в базе данных SQL с использованием ядра .Net - PullRequest
0 голосов
/ 19 февраля 2019

У меня проблема с сохранением данных в базе данных SQL из основного API-приложения .Net.

Я использую универсальный шаблон репозитория, где универсальный класс репозитория принимает TContext в качестве параметра и создает соответствующий контекст БД.

Вот как выглядит мой общий репозиторий:

public abstract class Repository<TContext, TEntity> : IRepository<TEntity>

Внутри класса у меня есть метод для создания экземпляра данного контекста БД:

public TContext CreateContext() {
    return (TContext)Activator.CreateInstance(typeof(TContext), Options);
}

И я обертываю метод CreateContext вИспользование оператора для создания экземпляра контекста БД:

public TEntity Add(TEntity entity) {
    using (var context = CreateContext()) {
        var added = context.Set<TEntity>().Add(entity);
        context.SaveChanges();
        return added.Entity;
    }
}

У меня есть сложная сущность, которая содержит несколько других сущностей (связанных данных).Когда API получает вызовы для обновления связанных объектов в последовательном порядке, все работает нормально, записи в базе данных обновляются.

Хотя возникает проблема, когда API получает одновременные вызовы для нескольких связанных объектов одновременно.При пошаговой отладке я могу заметить, что записи базы данных обновляются, но когда API возвращает ответ, я все еще получаю старые значения, а записи базы данных снова перезаписываются старыми значениями.

Я не мог 'Придумайте решение этой проблемы, кроме ожидания завершения каждого вызова и выполнения вызовов в последовательном порядке, что является значительным ударом по производительности.

Приложение работает с использованием .Net core 2.2.

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