В методе модульного тестирования я систематически получаю ThreadAbortException
всякий раз, когда я вызываю SaveChanges
или SaveChangesAsync
(в экземпляре Entity Framework 6 DbContext
) после другого вызова асинхронного метода, например SingleOrDefaultAsync
или ToListAsync
.
Похоже, что вызов SaveChanges/SaveChangesAsync
в другом потоке, чем тот, который создал экземпляр DbContext
, является причиной проблемы, что странно.Насколько мне известно, нет ничего необычного в том, что выполнение кода после ключевого слова await продолжается другим рабочим потоком.
Что не так в моем коде?Заранее благодарю за ответы!
using (var ctx = new MyContext())
{
// worker thread id = n
SomeDto dto= await ctx.SomeDtoSet.Where(x => x.SomeDto Id == id).SingleOrDefaultAsync();
// worker thread id = n + 1
ctx.SaveChanges();
// ctx.SaveChangesAsync(); behaves similarly
}