#entity-framework #firebird
#entity-framework #firebird
Вопрос:
Я создал простое приложение WinForms, которое подключается к серверу Firebird с помощью EntityFramework. База данных содержит только одну таблицу с 4 полями (Id, имя, фамилия, Email). Когда я параллельно запускаю другой запрос для обновления другого поля, я получаю исключение с сообщением «конфликт блокировки при транзакции без ожидания». Это специфичное поведение EF или мне нужно настроить сервер firebird для блокировки на уровне поля использования?
Ответ №1:
Вы получаете эту ошибку, если одновременно обновляете одну и ту же строку в нескольких транзакциях. В Firebird нет такой вещи, как блокировка на уровне поля, поскольку строка в целом является версионной.
Единственные доступные вам решения: не делайте этого, обновите все поля в одном запросе, добавьте механизм повторных попыток или не запускайте обновления разных полей параллельно.