Multi-async в Entity Framework 6?

asynchronous entity-framework entity-framework-6

Вопрос

Это мой код:

var banner = context.Banners.ToListAsync()
var newsGroup = context.NewsGroups.ToListAsync()
await Task.WhenAll(banner, newsGroup);

Но когда я вызвал функцию от контроллера. Он показал ошибку

Вторая операция началась в этом контексте до завершения предыдущей асинхронной операции. Используйте «ждут», чтобы убедиться, что какие-либо асинхронные операции были выполнены до вызова другого метода в этом контексте. Любые члены экземпляра не гарантируют безопасность потоков.

Пожалуйста, помогите мне решить эту проблему.

Принятый ответ

Исключение объясняет, что существует только одна асинхронная операция за каждый разрешенный контекст за раз.

Таким образом, вы либо должны await их по одному, как сообщение об ошибке:

var banner = await context.Banners.ToListAsync();
var newsGroup = await context.NewsGroups.ToListAsync();

Или вы можете использовать несколько контекстов:

var banner = await context.Banners.ToListAsync();
var newsGroup = await context.NewsGroups.ToListAsync();

Популярные ответы

Если вы используете контейнер IoC для инъекции поставщика данных, подумайте о том, чтобы использовать тип «переходный» или «PerWebRequest» для вашего жизненного цикла.

Например: https://github.com/castleproject/Windsor/blob/master/docs/lifestyles.md




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему