是否可以在流畅的配置中使用不同的CurrentSessionContexts?

时间:2010-01-06 17:32:46

标签: c# fluent-nhibernate

我目前正在通过静态调用(例如

)设置会话配置
SessionConfiguration.GetSessionConfiguration();

上述方法返回已配置的ISessionFactory:

public static ISessionFactory GetSessionConfiguration()
{
    return Fluently.Configure()
        .Database(MsSqlConfiguration
            .MsSql2005
            .ConnectionString(/*...*/)
            .ShowSql()
            .CurrentSessionContext<WebSessionContext>())
        .Mappings(/*etc*/)
        .BuildSessionFactory();
}

我正在研究的部分是“CurrentSessionContext&lt;&gt;”。我希望能够根据调用它的应用程序来设置它。大多数情况下,这个库是通过Web应用程序访问的,所以上面的工作正常。但是,最近我需要在控制台应用程序中使用此层,其中CallSessionContext似乎更合适。

是否可以传递ICurrentSessionContext以供使用?

我尝试过以下方面:

public static ISessionFactory GetSessionConfiguration<ICurrentSessionContext>

public static ISessionFactory GetSessionConfiguration<TSessionContext>

但还没有运气。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

这可以使用“where constraints”。

即:

ISessionFactory GetSessionConfiguration<T> where T : ICurrentSessionContext

调用时,您可以执行以下操作:

SessionConfiguration.GetSessionConfiguration<CallSessionContext>();