Я занимаюсь разработкой веб-приложения с asp.net mvc 2 и использую NHibernate (сеанс для каждого запроса) и Unity (для внедрения зависимостей).
В моем Global.asax яуправление моей сессией примерно так:
public override void Init()
{
base.Init();
BeginRequest += OpenNHibernateSession;
EndRequest += DisposeNHibernateSession;
}
private static void OpenNHibernateSession(object sender, EventArgs e)
{
ManagedWebSessionContext.Bind(HttpContext.Current, _sessionFactory.OpenSession());
}
private static void DisposeNHibernateSession(object sender, EventArgs e)
{
var session = ManagedWebSessionContext.Unbind(HttpContext.Current, _sessionFactory);
if (session != null)
session.Dispose();
}
Хорошо, и в моих репозиториях (в конструкторе) я передаю SessionFacotry (статический в global.asax) и получаю ISession с помощью SessionFacotry.GetCurrentSession ().Мои репозитории я добавляю в контроллеры контроллера!Отлично ...
Но в моем приложении asp.net mvc у меня есть значение в кеше и делегат CacheRemovedItem с этим кешем.В этом методе (в делегате) мне нужно сохранить некоторую информацию в моих репозиториях, но у меня нет запроса по истечении срока действия кэша.Я хотел бы знать как я могу РАЗРЕШИТЬ мои зависимости в этом методе (делегат CacheItemRemoved) правильным образом ?Или Как я могу настроить ISession для получения через GetCurrentSession () в SessionFactory ?
PS: Извините за мой английский!