Я разместил этот вопрос на форуме светового переключателя и ничего не получил.Я подумал, что попробую еще раз, прежде чем отказаться от Lightswitch.
Я реализую удаление в базе данных Sql Server с четко определенными реляционными ограничениями.По разным причинам я не могу указать каскадное удаление в этих отношениях.
Мой подход кажется правильным, потому что я успешно удаляю один тип сущности.В событии удаления сущности я удаляю всех связанных потомков, как это:
entity.simpleChild.Delete();
foreach (var child in entity.complexChild)
{
((IEntityObject)child).Delete();
}
foreach (var child in entity.ChildWithGrandChildren)
{
foreach (var grandChild in child.Children)
{
((IEntityObject)grandChild).Delete();
}
child.Delete();
}
Однако один из моих типов сущностей не работает.У этой сущности есть внуки, но я тоже их удаляю.Кроме того, когда я комментирую удаление внуков и пытаюсь удалить объект, у которого нет связанных внуков, я получаю ту же ошибку.Я удаляю все в том же порядке, что и скрипт TSQL, который работает.Однако во время выполнения я получаю эту ошибку:
Операция не выполнена: отношение не может быть изменено, так как одно или несколько свойств внешнего ключа не могут иметь значение NULL.Когда в отношение вносится изменение, для соответствующего свойства внешнего ключа устанавливается нулевое значение.Если внешний ключ не поддерживает нулевые значения, необходимо определить новое отношение, свойству внешнего ключа должно быть назначено другое ненулевое значение или несвязанный объект должен быть удален.
КогдаЯ профилирую базу данных, я вижу множество вариантов выбора, но попыток удаления нет, поэтому Lightswitch просто думает, что будет проблема.Что я могу сделать, чтобы выяснить, где проблема?Удаление различных связанных сущностей из модели никогда не приводит к какому-либо другому сообщению.