Можно ли использовать переменные CurrentSessionContexts в свободной конфигурации? - PullRequest
2 голосов
/ 06 января 2010

Я сейчас настраиваю свою конфигурацию сеанса с помощью статического вызова, такого как

SessionConfiguration.GetSessionConfiguration();

Приведенный выше метод возвращает настроенный ISessionFactory:

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

Часть, на которую я смотрю, это "CurrentSessionContext <>". Я хотел бы иметь возможность установить это на основе приложения, которое его вызывает. В большинстве случаев доступ к этой библиотеке осуществляется через веб-приложение, поэтому все вышеперечисленное работает нормально. Однако недавно у меня возникла необходимость использовать этот уровень в консольном приложении, где CallSessionContext показался более подходящим.

Можно ли передать ICurrentSessionContext для использования на месте?

Я пробовал что-то вроде:

public static ISessionFactory GetSessionConfiguration<ICurrentSessionContext>

или

public static ISessionFactory GetSessionConfiguration<TSessionContext>

но пока не повезло.

Любая помощь очень ценится!

1 Ответ

2 голосов
/ 07 января 2010

Это возможно, используя "где ограничения".

е:

ISessionFactory GetSessionConfiguration<T> where T : ICurrentSessionContext

При вызове это позволяет делать следующее:

SessionConfiguration.GetSessionConfiguration<CallSessionContext>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...