代码之家  ›  专栏  ›  技术社区  ›  Mike Fielden

在林克,检查孩子的关系?

  •  1
  • Mike Fielden  · 技术社区  · 17 年前

    在林克,有没有办法检查父母的记录是否存在于孩子身上?

    我有一个表,它与其他12个表有外键关系。我想做的就是查看这些子表中的任何记录是否依赖于父表,这样我就可以删除它,而不会导致FK约束的错误。

    谢谢你们。

    我最终只是制作了一个扩展类,对每个扩展类进行了检查。..耗时,但完成了工作。..如果可能的话,我仍然希望得到意见

    2 回复  |  直到 17 年前
        1
  •  1
  •   gfrizzle    17 年前

    你可以暴力破解它,并将删除包裹在try-catch中。只要所有删除都是同一上下文的一部分,如果由于FK关系而无法删除一个子项,它将回滚该块中的所有删除。

        2
  •  0
  •   matt_dev    17 年前

    这可能有点笨拙,你必须遍历你的孩子表并将它们全部合并,但这是一个开始。..

            ParentChildrenDataContext context = new ParentChildrenDataContext();
    
            var child1Ids = from c in context.ChildType1s
                            select c.ParentId;
    
            var child2Ids = from c in context.ChildType2s
                            select c.ParentId;
    
    
            var allChildren = child1Ids.Union(child2Ids);
    
            var myParents = from p in context.Parents
                            where allChildren.Contains<int?>(p.ParentId)
                            select p;
    
            return myParents.Count();