Próbuję usunąć datatable, które zostały załadowane do zestawu danych i zostały powiązane. Oto kod, który próbowałem.Jak usunąć datatable z zestawu danych (ma kilka relacji)
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;
Spowoduje to zgłoszenie wyjątku w momencie usuwania tabeli z powodu istniejącego ograniczenia klucza obcego. Niestety, tak jak logika, nie mam pojęcia, jak nazywa się to ograniczenie [więc nie mogę tego zakodować na sztywno].
Czy można to zrobić w łatwiejszy sposób, lub mogę uzyskać sugestie, jak zlokalizować i usunąć ograniczenie, które jest przyczyną mojego problemu.
góry dzięki, Steve
-------------------------- ODPOWIEDŹ ---------- --------------
Nie pozwolono mi odpowiedzieć na własne pytanie, więc tutaj jest rozwiązanie, które wymyśliłem. Ten fragment kodu działa teraz dla mnie. Musiałem przenieść relację do drugiej tabeli i usunąć z niej ograniczenie.
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");
}
domeny to zestaw danych (typu System.Data.DataSet), ale tak, że dane zostały pierwotnie załadowane z SQL Server 2005 – Steve
@Chris Pracuje w pamięci z obiektów ADO.NET, silnik bazy danych nie ma znaczenia w tym kontekście. –
Zauważyłem, że nie muszę wykonywać trzech linii: domain.Tables ["TABLE_NAME"]. ChildRelations.Clear(); domain.Tables ["TABLE_NAME"]. ParentRelations.Clear(); domain.Tables ["TABLE_NAME"]. Constraints.Clear(); –