Veri kümesine yüklenen ve ilişkili olan bir veri tabanını kaldırmaya çalışıyorum. İşte denediğim kod.Veri kümesinden bir veri kümesini nasıl kaldırabilirim (bir grup ilişkisine sahiptir)
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;
Bunun nedeni, mevcut bir yabancı anahtar tabloyu, kaldırma noktasında bir istisna atar. Ne yazık ki, mantığın yolu Kısıtlamanın adının ne olduğu hakkında hiçbir fikrim yok [bu yüzden kodu zorlayamıyorum].
Bunu daha kolay bir şekilde gerçekleştirmek için var mı, yoksa sorunuma neden olan kısıtlamanın nasıl bulunacağı ve kaldırılacağı konusunda bazı önerilerde bulunabilir miyim? peşin
sayesinde Steve
-------------------------- YANIT ---------- --------------
Kendi sorumu cevaplayamama izin verilmedi, işte geldiğim çözüm burada. Bu kod parçacığı artık benim için çalışıyor. İlişkisini diğer masaya götürmek ve kısıtlamayı oradan kaldırmak zorunda kaldım.
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");
}
alanı (tip System.Data.DataSet ait) bir veri kümesi ama evet, verilerin ilk başta SQL SERVER 2005 – Steve
@Chris o ADO.NET nesnelerle bellekte çalışıyor den yüklendi, veritabanı altyapısı bu bağlamda uygun değildir. –
Üç satırlık etki alanını kullanma gereği duymadım.Tablolar ["TABLE_NAME"]. ChildRelations.Clear(); domain.Tables ["TABLE_NAME"]. ParentRelations.Clear(); domain.Tables ["TABLE_NAME"]. Kısıtlamalar.Clear(); –