Информация об изменениях

Сообщение Re: Транзакции,MySql,EntityFramework от 13.07.2015 9:57

Изменено 13.07.2015 11:18 Somescout

Как я понимаю этот код выполняется в нескольких потоках, проверка существования и создание новой записи неатомарны и потому возможно задвоение записей при любом режиме изоляции транзакций. На мой взгляд есть два решения:
* Блокировка — программная (есть программа выполняется в одном экземпляре) или эксклюзивная блокировка таблицы (строк или всей таблицы), которая предотвращает возможность работы с таблицей двух потоков одновременно.
* Добавление уникального индекса — не знаю, насколько это возможно в вашей базе, но в этом случае будет корректно возникать исключение при выходе из транзакции с откатом всех изменений.
Re: Транзакции,MySql,EntityFramework
Как я понимаю этот код выполняется в нескольких потоках, проверка существования и создание новой записи неатомарна и потому возможно задвоение записей при любом режиме изоляции транзакций. На мой взгляд есть два решения:
* Блокировка — программная (есть программа выполняется в одном экземпляре) или эксклюзивная блокировка таблицы (строк или всей таблицы), которая предотвращает возможность работы с таблицей двух потоков одновременно.
* Добавление уникального индекса — не знаю, насколько это возможно в вашей базе, но в этом случае будет корректно возникать исключение при выходе из транзакции с откатом всех изменений.