2014-12-17 6 views
0

Кто-нибудь знает или объясняет, почему следующий код содержит следующие ошибки, упомянутые ниже при использовании EF6? Я получаю эти ошибки с перерывами. Также, пожалуйста, предложите сохранить записи при возникновении ошибки.Пакетное сохранение ef 6 записей в цикле for

using (var context = GetNewDBEntities()) 
{ 
    for (var i = 0; i < Docs.Count; i++) 
    { 
     context.Docs.Add(Docs[i]); 

     //Save 50 Records per batch 
     if (i % 50 == 0) 
      context.SaveChanges(); 
    } 
    context.SaveChanges(); 
} 

EF 6 отключает соединение для вышеуказанного кода со следующими ошибками.

  1. An error occurred while updating the entries.
  2. The request failed to run because the batch is aborted, this can be caused by abort signal sent from client, or another request is running in the same session, which makes the session busy. A severe error occurred on the current command. The results, if any, should be discarded.
  3. Failed to establish a MARS session in preparation to send the request to the server. (provider: SMux Provider, error: 19 - Physical connection is not usable)
+0

Партия работает отлично. Периодически он выдает вышеупомянутые ошибки и не записывается в базу данных. Вопрос более специфичен для ошибок относительно того, что вызывает эти ошибки. – skali

+0

ОК, кажется, что в строке подключения не должно быть «несколько активных наборов результатов = истина». Я не буду пытаться продолжать, когда эта ошибка возникает. Контекст может находиться в противоречивом состоянии. Не могли бы вы показать некоторые детали объекта Doc? –

+0

Это просто таблица, отображаемая как объект класса EF, поэтому, когда он не может создать новый сеанс, он откатывает все сеансы? Что именно вы имеете в виду, когда происходит эта ошибка? и почему бы нет? это происходит с перерывами. – skali

ответ

1

Я включил SqlAzureExecutionStrategy в EF6.1 и вероломно ошибки, по крайней мере в течение 2-х недель без ошибок в настоящее время.