У меня есть серверное приложение, в котором у меня есть 3 сценария, в которых мне, кажется, нужны разные виды сеансов nhibernate:
- Вызовы в хранилище напрямую с самого сервера (во время начальной загрузки)
- Вызовы в хранилище, поступающие из службы Ria (служба по умолчанию для членов ASP.NET)
- Вызовы в хранилище, поступающие из службы WCF
В настоящее время я настроил свойКонфигурация nhibernate с sharparch, как этот
/// <summary>
/// Due to issues on IIS7, the NHibernate initialization cannot reside in Init() but
/// must only be called once. Consequently, we invoke a thread-safe singleton class to
/// ensure it's only initialized once.
/// </summary>
protected void Application_BeginRequest(object sender, EventArgs e)
{
NHibernateInitializer.Instance().InitializeNHibernateOnce(
() => InitializeNHibernateSession());
BootStrapOnce();
}
private void InitializeNHibernateSession()
{
NHibernateSession.Init(
wcfSessionStorage,
new string[] { Server.MapPath("~/bin/bla.Interfaces.dll") },
Server.MapPath("~/Web.config"));
}
Это работает для третьего сценария, но не для первых двух.Кажется, нужен некоторый контекст, специфичный для wcf-сессии.
Кажется, что метод SharpArch Init защищен от повторной инициализации с другим типом сессионного хранилища;
Каков наилучший способ созданиядругой сеанс для трех разных типов контекстов?
Мне кажется, что этот пост, похоже, связан с с этим , который помог мне взглянуть в правильном направлении, но я не нашелРешение пока.