2011-03-30 85 views

回答

0

我只是从数据库设计的角度回答。这听起来像你的模型有一个外键约束,防止当它有子级时删除父记录。根据您使用的工具和您拥有的权限(以及您希望影响数据模型完整性的程度),您可能可以删除此限制。这会在子表中留下孤立的数据。您也可以在父母上写入删除触发器,并首先删除所有孩子。或者,您可以构建代码以查找子项,首先将其删除,然后删除父项。

0

这为我工作:

for (int i = DS.Relations.Count - 1; i >= 0; i--) 
    DS.Relations.Remove(DS.Relations[i]); 

接下来,可以在这个片段中以除去可能阻止从数据集中删除表中的所有外键约束:

for (int i = DS.Tables.Count - 1; i >= 0; i--) 
{ 
    var table = DS.Tables[i]; 
    for (int constraint = table.Constraints.Count - 1; constraint >= 0; constraint--) 
    if (table.Constraints.CanRemove(table.Constraints[constraint])) 
     table.Constraints.Remove(table.Constraints[constraint]); 
}