NHibernate с StructureMap для не-веб-приложения - PullRequest
2 голосов
/ 18 мая 2010

Каковы лучшие практики для внедрения и управления сеансом / транзакцией для NHibernate с использованием StructureMap для не веб-приложения, такого как служба Windows?

В веб-контексте мы используем жизненный цикл управления сеансом PerRequest с использованием гибридного жизненного цикла StructureMap, но для службы Windows я не могу обработать IDisposable UnitOfWork ...

Спасибо.

1 Ответ

2 голосов
/ 20 мая 2010

Айенде дает хорошее резюме того, как обращаться с NHibernate в настольном приложении здесь .

С StructureMap я сначала создаю ISessionFactory вручную. Затем объявите экземпляр, который будет использоваться во всех экземплярах ISessionFactory:

        For<ISessionFactory>().Use(sessionFactory);

Таким образом, вы покидаете сами экраны, чтобы создавать и распоряжаться своими сеансами. Важно, чтобы все сеансы были изолированы друг от друга, чтобы избежать проблем с памятью. Это подробно объясняется в статье.

При таком подходе и при правильном использовании IStatelessSession я сократил многие проблемы, возникшие в приложении WPF / StructureMap / NHibernate.

...