@savva09
Начинающий .NET-ер

Как исправить This MySqlConnection is already in use. See https://fl.vu/mysql-conn-reuse?

.Net core 8.0, pomelo mysql

Возникла проблема на ровном месте, не могу определить добавление чего повлияло. При исполнении query:
if (toSend.ClearInteractions)
{
    var toRemove = _history.Interactions.ForUser(currentUser.Id).ToArray(); // Здесь
    _history.RemoveRange(toRemove);
}


dbContext - scoped, передается в конструктор контроллера. Вот
весь код взаимодействия с бд в методе

var path = _history.Interactions.ForUser(currentUser.Id).ToPath();

var previousID = _history.Interactions
    .ForUser(currentUser.Id)?
    .OrderBy(x => x.CreatedAt)
    .Last(x => x.Src == InteractionSourceType.Server)
    .VkMessageId;

// Answer.
await _history.Interactions.AddAsync(new Interaction()
{
// Init
});

await _history.SaveChangesAsync();

path = _history.Interactions.ForUser(currentUser.Id).ToPath();

if (toSend.ClearInteractions)
{
    var toRemove = _history.Interactions.ForUser(currentUser.Id).ToArray();
    _history.RemoveRange(toRemove);
}

// Ask.
var adding = _history.Interactions.AddAsync(new Interaction()
{
// Init
});

await adding;
await _history.SaveChangesAsync();



Также в контроллер передается scoped сервис, который также принимает в конструктор dbContext?, но при этом ничего не сохраняет и не изменяет.
  • Вопрос задан
  • 39 просмотров
Решения вопроса 1
@savva09 Автор вопроса
Начинающий .NET-ер
Проблема была в использовании DbContext в параллельном scoped сервисе. Решилась мгновенным исполнением query в обоих случаях (ToArray или ToList например).
Об этом более подробно написано вот здесь: Отложенное и немедленное выполнение LINQ. Metanit
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы