Нужны отзывы об обработке транзакций и внедрении репозитория Nhibernate - PullRequest
1 голос
/ 18 января 2012

Я переключаюсь на Nhibernate от EF. Nhibernate кажется немного более мощным, и я уже могу сказать, что он намного быстрее, чем программное обеспечение, которое Microsoft предоставляет нам с EF. Не быть "ненавистником", но EF, по моему мнению, отстой. Мне позволено мнение до тех пор, пока правительство не отнимет это у нас.

Я использую Fluent Nhibernate для конфигурации и сопоставлений, все отлично работает, я могу получать и выводить данные. Теперь самое интересное. Первый: управление сессиями; После просмотра статей на эту тему, я как никогда запутался. Я видел неправильный способ сделать это, а также то, что некоторые люди сказали бы, правильный путь. У меня есть настройка и модуль Http для привязки и отмены привязки и т. Д. Затем я посмотрел, как мой w3p становится счастливым в муравьях. Излишне говорить, что я отказался от модуля Http и пошел с замком Виндзор за веб-запрос, например, так:

container.Register(
            Component.For<ISessionFactory>().LifestyleSingleton().UsingFactoryMethod(
                m => NhibernateSessionFactoryHelper.BuildSessionFactory()));
        container.Register(
            Component.For<ISession>().LifestylePerWebRequest().UsingFactoryMethod(
                k => container.Resolve<ISessionFactory>().OpenSession()));
 // UPDATE: If this is not per webrequest ISession will close on second attempt
        container.Register(Component.For<ITransactionManager>().ImplementedBy<TransactionManager>().LifestylePerWebRequest());

Отличный вкус, меньше наполнения !! Таким образом, я доволен каждым веб-запросом с использованием Windsor, однако сейчас я ищу способ обработки транзакций и связанных типов транзакций. Видеть, как Nhibernate нравится, когда все в транзакции.

Кроме того, я пока обнажил свою реализацию репозитория, поскольку она, кажется, действительно абстрагируется от половины того, на что способен Nhibernate? Я также прочитал статью о http://ayende.com/blog/. Этот чувак ненавидит шаблон репозитория и, кажется, объясняет почему очень подробно; это имеет некоторый смысл. Однако он не предлагает конкретного решения для замены шаблона хранилища.

Что заменяет общий репозиторий? Как люди обрабатывают транзакции в приложении MVC3? ActionFilters может быть? [Транзакция] на ActionMethod ??

Спасибо, что прочитали мою напыщенную речь. Мне бы очень хотелось узнать, как люди справляются с этим в 2012 году. В примечании, пожалуйста, не размещайте никаких ссылок на UOW или Sharp Arch. Я вижу это совсем немного, и это лениво.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...