-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Некорректный порядок запросов в SQLDataService #204
Comments
Не всегда это будет работать. Если есть например уникальные индексы по какому-то полю, то Insert/Update могут не сработать при нарушении условия уникальности в результате этой операции из-за того, что Delete старой записи, с которой возникает дубль, еще не выполнился. Мне кажется в общем случае тут нет правильного порядка. Ситуации могут быть что и в одном и в другом порядке может быть нужно сохранять. По идее тут прикладному разработчику нужно думать и выполнять несколько UpdateObject-ов в рамках одной транзакции. |
Описание ошибки
Сейчас при выполнении запросов порядок таков, что сначала в SQLDataService выполняются Delete, потом Update и Create. Такой порядок может приводить к ошибкам:
Например, есть типы А и В. У обоих типов в одном обращении к сервису данных по разным объектам есть Delete и Update. В типе А удаляется запись. В типе В запись обновляется обнулением ссылки на удаляемый объект типа А. Корректный порядок: сначала обновление с обнулением ссылки, потом удаление. Фактический порядок, что сначала удаление, потом обновление, что приводит к ошибкам.
Возможно логично, чтобы сначала шло Update и Insert, потом Delete по таблице, но нужно продумывание данной ситуации на возможные побочные эффекты.
После реализации:
The text was updated successfully, but these errors were encountered: