2011-07-07 3 views
1

Можно ли создать несколько контекстов в одном потоке для сохранения данных в веб-приложении? У меня есть код, как показано ниже, и беспокоиться, если он будет работать на большом количестве итераций. Есть ли проблемы с таким кодом?Несколько контекстов в потоке

private void SaveContent(TargetSegment ts, 
            Folder f, 
            IEnumerable<Module> m) 
    { 
     using(var ctx = new EntityContainer()) 
     { 
      var entity = CreateEntityFrom(ts, f, m); 

      ctx.Entities.Add(entity); 
      ctx.SaveChanges(); 
     } 
    } 

    foreach(var ts in TargetSegments) 
    { 
     var f = FindFolder(ts); 
     var m = ExtractModules(ts, f); 

     SaveContent(ts, f, m); 
    } 

ответ

1

С кодом нет никаких проблем. Этот выше код будет выполнять инструкцию SQL INSERT каждый раз, когда он вызывается. У вас есть код в блоке использования, который является лучшим способом избавиться от объекта.

Я столкнулся с проблемами производительности только при выборе из модели EF для нескольких транзакций; и в этом случае я кэшировал, когда это было возможно, и у меня не было проблем.

+0

Спасибо. Я пытался использовать одиночный вызов SaveChanges для всей последовательности, но трудно проверить каждую сущность, когда она будет записана в db. Итак, я обрабатываю исключение, когда у меня есть вся информация об ошибке и ее контексте. –

Смежные вопросы