我在灯开关论坛上发布了这个问题,但一无所获。我想在放弃 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 脚本相同的顺序删除所有内容。但是,在运行时,我收到此错误:
操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。
当我分析数据库时,我可以看到很多选择,但没有尝试删除,所以 Lightswitch 只是认为会有问题。我该怎么做才能找出问题所在?从模型中删除各种相关实体永远不会产生任何不同的消息。