У меня есть следующая ситуация:Как реализовать рекурсивное удаление?
Заказчики содержат проекты и проекты, содержащие лицензии. Хорошо из-за архивирования мы ничего не будем удалять, но вместо этого будем использовать IsDeleted. otherweise Я мог бы использовать каскадное удаление.
Owkay Я работаю с репозиторием шаблона, так что я называю
customerRepository.Delete(customer);
Но здесь начинается проблема. Заказчик имеет значение isdeleted true. Но тогда я хотел бы удалить все проекты этого клиента, и каждый удаляемый проект также должен удалить все лицензии.
Я хотел бы знать, есть ли подходящее решение для этого. Это должно быть выполнено.
Обратите внимание, что это простая версия реальной проблемы. У клиента есть также сайты, которые также связаны с лицензиями, но я просто хотел упростить эту проблему для вас, ребята.
Я работаю в среде C#, используя SQL Server 2008 как базу данных.
редактировать: Я использую библиотеки Enterprice для подключения к базе данных
Да, я думаю, триггеры опасны. Вы можете потерять их. – user29964
Да. Люди иногда «забывают», что триггеры были созданы тоже. – RichardOD
Лично мне нравится идея триггера, поскольку она гарантирует, что в любое время, когда запись установлена, будет удалена, произойдут соответствующие другие изменения. Я думаю, что это безответственно сделать с помощью кода приложения. Он рискует иметь проблемы с целостностью данных. Триггер также может быть установлен для восстановления через все дочерние записи, если кто-то удаляется случайно. – HLGEM