2015-02-23 3 views
0

Здравствуйте, у меня есть проблема прямо сейчас, когда ORM создает слишком много подключений к моему серверу данных. Вот пример:Устранение контекста

public string AutoCheckPassword { 
     get { 
      try { 
        Secure360EntitiesModel context = new Secure360EntitiesModel(); 
        String DecryptedData = context.GetDecryptedData(AutoCheckPassword_Encrypted); 
        context.Dispose(); 
        return DecryptedData; 
      } catch (Exception ex) { 
       return ""; 
      } 

     } 
     set { 

      Secure360EntitiesModel context = new Secure360EntitiesModel(); 
      AutoCheckPassword_Backup = value; 
      AutoCheckPassword_Encrypted = context.GetEncryptedData(value.ToString()); 
      context.Dispose(); 
     } 
    } 

context.GetDecryptedData хранимая процедура, которая возвращает мои данные в незашифрованном виде. Как мы видим, я звоню context.Dispose(); но, похоже, это не удаление соединения. Так что я делаю неправильно?

+0

Сколько соединения, «слишком много»? Сколько соединений вы хотите иметь? Как вы наблюдаете, сколько у вас связей? – Servy

+0

Мы используем процедуру для обработки нескольких тысяч записей с использованием службы Windows, а число или соединения доходит до ~ 16000 в течение 10 минут или около того, и это приводит к тому, что экземпляр сервера sql начнет отказывать в дополнительных подключениях. Когда это происходит, служба Windows явно бросает несколько ошибок и в конечном итоге останавливается. И да, вы правы, я попытался использовать, и это не помогло. –

+0

Я читал эту статью https://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.100).aspx –

ответ

0

Вы должны использовать инструкцию using, чтобы читать об этом на MSDN, , он также будет вызываться dispose при вызове исключения.

Кроме того, вы можете прочитать в MSDN на Managing Connections in Object Services (Entity Framework) (тесной связи на отчуждать)

+0

Хотя он действительно должен использовать «использование», вряд ли он решит проблему, с которой он сталкивается. – Servy

+0

MSDN говорит, что taht EF закрывает соединение на диске, поэтому я предположил, что он не звонит в распоряжение. использование может решить его проблему –

+0

Нет, он не будет закрывать соединение, когда оно расположено. – Servy

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