我正试图删除已加载到数据集中的数据表,并且这些数据表已关联。 这是我尝试的代码。如何从数据集中删除数据表(有一堆关系)
domain.EnforceConstraints = false;
if (domain.Tables["TABLE_NAME"] != null)
{
domain.Tables["TABLE_NAME"].ChildRelations.Clear();
domain.Tables["TABLE_NAME"].ParentRelations.Clear();
domain.Tables.Remove("TABLE_NAME");
}
domain.EnforceConstraints = true;
由于外键约束的存在,在删除表时会抛出异常。不幸的是,逻辑的方式我不知道约束的名称是什么[所以我不能硬编码]。
是否可以以更简单的方式完成此操作,或者我可以获得一些关于如何找到并删除导致我的问题的约束的建议。
在此先感谢,史蒂夫
--------------------------答案---------- --------------
我不被允许回答我自己的问题,所以这里是我想出的解决方案。 此代码片段现在适用于我。我必须将关系移动到另一个表并从那里删除约束。
if (domain.Tables["TABLE_NAME"] != null)
{
for (int f = domain.Tables["TABLE_NAME"].ChildRelations.Count -1; f >=0; f--)
{
domain.Tables["TABLE_NAME"].ChildRelations[f].ChildTable.Constraints.Remove(domain.Tables["TABLE_NAME"].ChildRelations[f].RelationName);
domain.Tables["TABLE_NAME"].ChildRelations.RemoveAt(f);
}
domain.Tables["TABLE_NAME"].ChildRelations.Clear();
domain.Tables["TABLE_NAME"].ParentRelations.Clear();
domain.Tables["TABLE_NAME"].Constraints.Clear();
domain.Tables.Remove("TABLE_NAME");
}
域名(类型System.Data.DataSet中)的数据集,但肯定的,数据最初是从SQL Server 2005 – Steve
@克里斯,他是工作在内存与ADO.NET对象加载,数据库引擎在这种情况下不相关。 –
我发现我并不需要做三行 domain.Tables [“TABLE_NAME”]。ChildRelations.Clear(); domain.Tables [“TABLE_NAME”]。ParentRelations.Clear(); domain.Tables [“TABLE_NAME”]。Constraints.Clear(); – 2012-02-28 05:13:14