Использование оболочки nHibernate с свободно используемым nHibernate - PullRequest
2 голосов
/ 08 апреля 2010

Можно ли использовать что-то вроде этой обертки с быстрой конфигурацией?

http://jeffreypalermo.com/blog/use-this-nhibernate-wrapper-to-keep-your-repository-classes-simple/

Если так, куда бы я добавил беглый конфиг?

Кроме того, подойдет ли это для приложений asp.net и windows? Я планирую использовать шаблон репозитория, используя его для создания моего сеанса nHibernate?

Ответы [ 2 ]

4 голосов
/ 08 апреля 2010

В методе GetConfiguration в вашем SessionBuilder вместо

    public Configuration GetConfiguration()
    {
        var configuration = new Configuration();
        configuration.Configure();
        return configuration;
    }

показано на странице, на которую вы ссылаетесь, просто сделайте что-то вроде этого:

    public Configuration GetConfiguration()
    {
        return Fluently.Configure()
            .Database(/* your database settings */)
            .Mappings(/* your mappings */)
            .ExposeConfiguration(/* alter Configuration */) // optional
            .BuildConfiguration();
    }

Что касается дальнейшего запроса на обработку контекстов, у вас будет два класса, наследующих ISessionBuilder, например. AspSessionBuilder и WinAppSessionBuilder, и введите соответствующий для текущего проекта. Вы должны использовать стратегию, изложенную Jamie Ide , а также , опубликованную как ответ на этот вопрос, для обработки контекстов вместо использования HttpContext. Вам просто нужно изменить эту строку:

.ExposeConfiguration(x => x.SetProperty("current_session_context_class", "web")

на что-то вроде "call" или "thread_static". Смотрите эту страницу в вики NHibernate Forge для хорошего объяснения различных типов контекстных сессий:

Контекстные сессии @ NHibernate Forge

1 голос
/ 08 апреля 2010

Да, вы можете использовать его, но лучше использовать встроенное контекстное управление сеансами NHibernate, а не обрабатывать его самостоятельно. Смотрите мой ответ на этот вопрос . В дополнение к меньшему количеству кодирования, он предлагает две другие опции в дополнение к HttpContext, Call и ThreadStatic.

...