Я создаю приложение MVC3 с Entity Framework, где почти все действия разрешены только авторизованным пользователям. Следовательно, мне часто приходится ссылаться на организацию-член. Я экспериментировал с различными способами кеширования члена и придумал довольно быстрый подход. Но я хотел бы получить совет / взгляд на риски / недостатки того, что я делаю.
Я определил фабричный класс для извлечения экземпляра Member, который «зарегистрирован» в Ninject, чтобы я мог использовать его там, где он мне нужен. Привязка Ninject является «областью действия сеанса» (я объясню это чуть позже). Метод фабрики сначала проверяет Session, чтобы увидеть, содержит ли он ранее созданный экземпляр Member. Если Session не выполняет подпрограмму, создает экземпляр из базовой базы данных через EF, сохраняя значение в Session и возвращая его.
Поскольку некоторые из обращений к экземпляру Member являются вызовами EF, я должен был убедиться, что контекст объекта EF также находится в области сеанса (я узнал, как трудно вызывать подпрограммы EF для экземпляра Member, который изначально был создан в другом контексте не работает слишком хорошо). Поскольку фабрика и контекст объекта создаются с помощью Ninject, мне пришлось определить область действия Session для Ninject.
Я нашел фрагмент кода для этого здесь , который я смог изменить в соответствии со своими потребностями. Но это такой простой фрагмент, что мне интересно, есть ли причина, по которой эта возможность не предоставляется "изначально" Ninject (или Ninject MVC). Что заставляет меня задаться вопросом, не преследую ли я проблемы из-за того, что я делаю.
Я понимаю, что в Session есть ряд аспектов хранения вещей, которые вы должны программировать, главным из которых является тот факт, что хранимый объект может «исчезнуть» в любое время (т. Е. Вам всегда нужно иметь способ воссоздать его, когда вы его получите). Но хотя это добавляет достаточно сложности, чтобы я не хотел делать это для большого количества объектов, сделать это для одного объекта Member не так уж сложно.
В любом случае приветствуются советы и отзывы по определению объема сеанса привязки Ninject и сохранению сущностей EF в сеансе для приложения MVC.