EF контекст синглтон уместен в ASP.NET? - PullRequest
0 голосов
/ 15 февраля 2012

Я развернул приложение MVC на IIS 7.5, в котором используется EF 4.0. Контекст EF инкапсулирован в единый пакет, который используется в приложении. Я сделал это потому, что считал, что приложению необходим единый контекст для управления функциями CRUD во всех сеансах.

Кажется, это работает нормально, за исключением двух проблем, которые меня мучают:

  1. Иногда я нахожу повторяющиеся записи в базе данных. Примечание: я не обновляю записи, я отмечаю старые записи как удаленные и записываю новую запись в БД.

  2. Иногда EF теряет соединение SQL, вызывая сбой всего приложения, что вынуждает меня перезапускать пул приложений.

Вполне вероятно, что эти проблемы вызваны разделением контекста? Было бы лучше не использовать шаблон синглтона для контекста EF? Создает ли использование одиночного узла единую точку отказа для всех запросов Ajax от всех пользователей?

Спасибо за любые советы ...

  public class SharedNHREntitiesContext

{ только для чтения NHREntities _context;

// Static members are lazily initialized.
// .NET guarantees thread safety for static initialization.
private static readonly SharedNHREntitiesContext instance = new SharedNHREntitiesContext();

// Make the constructor private to hide it.
// This class adheres to the singleton pattern.
private SharedNHREntitiesContext()
{
  // Create the ObjectContext.
  _context = new NHREntities();
}

// Return the single instance of the ClientSessionManager type.
public static SharedNHREntitiesContext Instance
{
  get
  {
    return instance;
  }
}

public NHREntities Context
{
  get
  {
    return _context;
  }
}

}

1 Ответ

0 голосов
/ 05 марта 2012

Просто чтобы продолжить: я удалил одноэлементный контекст EF из кода.У меня не было никаких ошибок за неделю с тех пор, как я это сделал ... так что, похоже, одноэлементный контекст не является хорошей идеей при вызовах контроллера MVC.

При этом, я все еще получаю время от времени повторяющиеся строки, поэтому у меня все еще есть некоторые проблемы, которые не нужно решать синглтоном.

Спасибо всем, кто помог мне решить эту проблему.

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