У меня простой вопрос, но я нигде не нашел ответа.
Решение содержит два веб-API. Один -. NET Core 2.1 с EF Core 2.1.1, второй - 3.1 с EF Core 3.1.1, и мой код одинаков для обоих. Существует один пользовательский репозиторий и один контроллер.
Персональный репозиторий:
public PersonRepository(AppContext appContext)
{
this.appContext = appContext;
}
public async Task<IEnumerable<Person>> GetAll()
{
return await appContext.People.ToListAsync();
}
Контроллер:
public MyController(PersonRepository personRepository)
{
this.personRepository = personRepository;
}
[HttpGet]
public async Task<ActionResult> Get()
{
var data = personRepository.GetAll();
var data1 = personRepository.GetAll();
var result = await Task.WhenAll(data, data1);
return Ok(data.Result);
}
services.AddDbContext<AppContext>(options => options
.UseSqlServer("")
.EnableSensitiveDataLogging(true));
Это может показаться глупостью. Но это только для демонстрации. У меня вопрос, почему этот код работает в решении 2.1, но в 3.1 не , и появляется исключение InvalidOperationException: вторая операция началась в этом контексте до завершения предыдущей операции. (То же самое для IIS и Kestrel).
Я знаю, как это исправить в 3.1, это не мой вопрос. Мне просто нужно знать, почему это произошло и что изменилось между этими версиями или когда-либо.
Большое спасибо за любой ответ.