Массовые обновления и транзакции с использованием Entity Framework - PullRequest
0 голосов
/ 02 апреля 2019

При попытке выполнить обновления для нескольких записей вызов DbContext.SaveChanges () включает их в транзакцию. Однако это, похоже, не позволяет другим пользователям сохранять свои данные в обновляемой таблице, и они получают ошибки тайм-аута.

Использование EntityFramework v6.2.0 Я попытался понять скрытое поведение, создав приложение, в котором я извлекаю несколько строк (обычно около 800) из базы данных, обновляю их свойства (до 6 свойств на строку), а затем вызываю DbContext.SaveChanges (). Я записываю сгенерированный SQL в окно вывода и вижу, что все мои операции обновления заключены в одну транзакцию. При сохранении, когда было обновлено большое количество записей, другие пользователи не могут выполнять такие операции, как обновление той же таблицы.

Результаты из моего кода ожидаемые, обновления выполнены. Однако проблема возникла, когда другие пользователи пытались обновить строку в той же таблице с помощью DbContext.SaveChanges () во время выполнения моих операций обновления. В этом случае одна строка извлекается с использованием Entity Framework и обновляется, а затем, наконец, вызывается DbContext.SaveChanges (). Однако они получают исключение SQLException, поскольку время их выполнения истекло. Я подозреваю, что это как-то связано с моими обновлениями и транзакцией, что мои обновления обернуты в блокировку таблицы во время выполнения моих операций обновления.

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