У меня есть таблица концепций из примерно 1000 строк, которую я хотел бы очистить вместе со всеми ее потомками в таблице атрибутов (для каждого концепта должна быть только одна строка атрибута). Вызов сохранения изменений ниже занимает около 2 минут, могу ли я выполнить какую-либо оптимизацию для приведенного ниже кода или мне нужно написать сохраненную процедуру.
public static void RemoveConcepts()
{
using (var ve = new DataModel())
{
foreach (var concept in ve.Concepts)
{
if (concept.Thesaurus != null)
{
concept.Thesaurus.Concepts.Remove(concept);
}
concept.Thesaurus = null;
concept.Attributes.Load();
concept.Attributes.Clear();
ve.DeleteObject(concept);
}
ve.SaveChanges();
}
}
Модель данных http://img504.imageshack.us/img504/9604/datamodel.png