2008-11-20 76 views
1

有沒有什麼辦法可以在Linq中檢查父項記錄是否存在於其子項中?在Linq中,檢查孩子的關係?

我有一個表與其他12個表有外鍵關係。我想要做的就是查看這些子表中的任何記錄是否取決於父級,因此我可以刪除它而不會導致FK約束出錯。

謝謝你們。

我最終就是這個檢查了每一個擴展類...費時,但得到了這份工作做了......我還是想意見如果可能的話

回答

1

你可以蠻力,幷包裹刪除在嘗試趕上。只要所有刪除都是同一個上下文的一部分,如果一個孩子因FK關係而無法刪除,它將回滾該塊中的所有刪除。

0

這可能是有點cludgy,你會通過你的子表和工會它們都有循環,但這裏是一個開始......

 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();