Я пытаюсь отладить проблему с производительностью в приложении ASP.NET с использованием .NET 4.5, EF5 (с кэшем 2-го уровня и отложенной загрузкой навигационных свойств) и SQL Server 2014. Мы испытываем ряд блокировок ожидания вSQL сервер.Когда я смотрю на транзакции блокировки, они содержат очень быстрое ОБНОВЛЕНИЕ, а затем очень большой SELECT.ОБНОВЛЕНИЕ якобы является необходимым, но меня смущает вопрос, почему SELECT запускается в одной и той же транзакции (и почему что-то вообще выбирается).Фундаментальная проблема заключается в том, что таблица, на которую ссылается инструкция UPDATE, заблокирована на время выполнения инструкции SELECT.
Мы используем шаблон репозитория для получения данных из базы данных, а DbContext.SaveChanges () для фиксации изменений.Я не могу понять, как это возможно, что EF производит транзакцию, где есть и запись, и чтение, и я не получаю релевантные результаты, когда пытаюсь выполнить поиск в Google.
У нас есть несколько интерфейсов в системе, а также несколько консольных приложений, работающих с базой данных, но все они проходят одинаковую настройку / версии .NET и EF.
Я полагаю, что это должно быть через SaveChanges, так как это (AFAIK) единственный раз, когда вещи записываются в базу данных.
Есть ли у кого-нибудь здесь подсказка о том, как эти транзакции блокировки могут быть произведены?