Потокобезопасное отслеживание в EF Core - PullRequest
0 голосов
/ 05 февраля 2019

Я нашел много вопросов и информации о том, что DbContext не является потокобезопасным.Но примеры в таких вопросах содержат вызов SaveChanges, который используется несколькими потоками.Как насчет следующего примера:

someCollection1.AsParallel().ForAll(item => { item.SomeField = 0; dbContext.Update(item); })
someCollection2.AsParallel().ForAll(item => { item.SomeField = 0; dbContext.Update(item); })
dbContext.SaveChanges();

Как я понимаю, строка dbContext.Update(item) создает dbContext дорожек item для обновления.SaveChanges вызывается только одним потоком.Это нормально, что несколько потоков обращаются к Update для отслеживания?

1 Ответ

0 голосов
/ 20 мая 2019

Согласно документации Microsoft (см. Entity Framework Core: асинхронные запросы ), EF Core не поддерживает запуск нескольких параллельных операций на одном экземпляре DbContext.Таким образом, чтобы запустить несколько параллельных операций в одной базе данных, вам нужно иметь выделенный экземпляр DbContext на поток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...