14.03.2012, 18:15 | #1 |
Участник
|
Аккуратнее! ValidateDelete() на таблице не всегда спасет.
Когда просят сделать запрет на удаление записи в таблице, программисты, очень часто, прибегают к самому простому способу - перекрыть метод ValidateDelete(). Сегодня нактнулся на такую особенность. Предположим у вас есть 2 таблицы : Table и Line. В таблице Line настроен Relation на таблицу Table и перекрыт метод ValidateDelete() на различные дополнительные проверки во время удаления записи. А в таблице Table настроен DeleteActions: Cascade на таблицу Line. Удаление строки в таблице Table с легкостью удалит связанные строчки в Line, несмотря на все проверки.
Вывод : Каскадное удаление игнорирует метод ValidateDelete(). Поэтому перед перекрытием этого метода пробежаться по Relation-ам и посмотреть на существование DeleteActions в связанных таблицах лишним не будет. Может быть этот баг (или фича, в чем я крайне сомневаюсь) был уже описан здесь. Но по поиску не нашел. Для нас это хорошо, что обнаружилось заранее. AX 2009 RU5.
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|