Код: Выделить всё
await _fileWatcherService.StartWatchingAsync();
var backgroundTask = Task.Run(() => ProcessQueueAsync(cancellationTokenSource.Token), cancellationTokenSource.Token);
С другой стороны, backgroundTask получает некоторые строки TCP и вставляет запись в MainDatabase.Sqlite.
Они используют разные экземпляры одного и того же класса контекста, похожие на этот
Код: Выделить всё
using (var context = new MyContext())
{
var existingFile = await context.acquisition_files.FindAsync(acquisition_file.name);
if (existingFile != null)
{
context.Entry(existingFile).CurrentValues.SetValues(acquisition_file);
}
else
{
await context.acquisition_files.AddAsync(acquisition_file);
}
try
{
await context.SaveChangesAsync();
}
catch (Exception ex)
{
ErrorHandler.LogError(ex, $"error saving changes from SaveChangesAsync in FileWatcherService class {ex.Message} AND {ex.InnerException} ");
Debug.WriteLine($"error saving changes from SaveChangesAsync in FileWatcherService class {ex.Message} AND {ex.InnerException} ");
}
}
Я читал, что Entity Framework не поддерживает сохранение изменений из параллельных задач, если вы не используете разные экземпляры контекста (что я и делаю).
Как я могу решить эту проблему? Должен ли я иметь выделенную базу данных (
Код: Выделить всё
Mydatabase2Подробнее здесь: https://stackoverflow.com/questions/787 ... rent-taskt
Мобильная версия