Я развернул приложение MVC на IIS 7.5, в котором используется EF 4.0. Контекст EF инкапсулирован в единый пакет, который используется в приложении. Я сделал это потому, что считал, что приложению необходим единый контекст для управления функциями CRUD во всех сеансах.
Кажется, это работает нормально, за исключением двух проблем, которые меня мучают:
Иногда я нахожу повторяющиеся записи в базе данных. Примечание: я не обновляю записи, я отмечаю старые записи как удаленные и записываю новую запись в БД.
Иногда 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;
}
}
}