我正在尝试在SQL Server中的同一个表之间创建多对多关系。
我有一个表Object
,其中列ObjectId
和Name
。
这种关系遵循以下规则:
所以我创建了第二个表ObjectRelation
,其中包含ParentId
和ChildId
列,当然我希望通过级联删除这些关系。
但是当我在SQL Server中尝试这个时,我得到了错误
在表'tblADMembership'上引入FOREIGN KEY约束'FK_ObjectRelation_Object1'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。
在SQL Server Compact中我得到
引用关系将导致不允许循环引用。
我已经完成了一些研究,我理解为什么会出现这些错误,但有没有办法解决这个问题,这也适用于SQL Server Compact(所以没有存储过程)?或者有更好的方法来模拟这种关系吗?
答案 0 :(得分:2)
我自己也遇到过类似的问题....我最终删除了外键。循环删除逻辑被推送到Code。
答案 1 :(得分:0)
我在树视图中遇到了类似的问题。这是一个对我有用的删除代码: (我将id保存到value属性中,并且我使用实体模型框架来删除) 也许可以帮助别人
private void removeRecursive(TreeNode parentToDelete)
{
foreach (TreeNode tn in parentToDelete.ChildNodes)
removeRecursive(tn);
long id = long.Parse(parentToDelete.Value);
Category deleteCat = context.Categories.Single(x => x.Id ==id);
context.Categories.DeleteObject(deleteCat);
}
对不起我的英语很糟糕......