Entity Framework Удалить производительность - PullRequest
1 голос
/ 04 февраля 2010

У меня есть таблица концепций из примерно 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

1 Ответ

2 голосов
/ 04 февраля 2010

Если у вас есть каскад атрибутов, , вам не нужно загружать / очищать их . Это, вероятно, объясняет большую часть проблем с производительностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...