Контекст объекта Entity Framework в объекте сеанса ASP.NET?

У нас есть многоуровневое приложение Asp.NET Web Forms. Уровень данных имеет класс с именемDataAccess какие препятствияIDisposable и имеет экземпляр нашего Объектного контекста Entity Framework в качестве частного поля. Класс имеет несколько открытых методов, возвращающих различные коллекции сущностей, и будет располагать свой объектный контекст при его удалении.

Из-за ряда проблем, с которыми мы столкнулись, мы решили, что было бы большим плюсом сохранить контекст объекта (или экземплярDataAccess) по объему дольше на сервере. Было предложено сохранить экземпляр вHttpContext.Current.Items коллекция изэта почта чтобы иметь один экземпляр на запрос Http.

Что мне интересно, так это: какие проблемы / проблемы / проблемы могут возникнуть при хранении экземпляра нашего Объектного контекста вHttpContext.Current.Session объект ????

Я предполагаю, что объект Session будет завершен и настроен на сборку мусора по истечении сеанса пользователя, поэтому экземпляр будет расположен правильно.Я предполагаю, что большинство настроек браузера по умолчанию позволят нашему приложению размещать свой файл cookie SessionId без каких-либо проблем.Объем данных, с которыми будет работать объектный контекст, невелик и не представляет проблемы для нашего достойного серверного оборудования, что касается кэширования во времени и относительно небольшого числа одновременных пользователей.

Это будет относительно быстро реализовать и не повлияет на наши многочисленные существующие модульные тесты.

Мы будем использовать AutoFac и класс ServiceProvider для предоставления экземпляров. Когда требуется экземпляр ObjectContext, он будет возвращен кодом, подобным следующему:

private static Entities GetEntities(IContext context)
{
    if (HttpContext.Current == null)
    {
        return new Entities();
    }

    if (HttpContext.Current.Session[entitiesKeyString] == null)
    {
        HttpContext.Current.Session[entitiesKeyString] = new Entities();
    }

    return (Entities)HttpContext.Current.Session[entitiesKeyString];
}

Приветствия.

Ответы на вопрос(2)

Ваш ответ на вопрос