Я переключаюсь на 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. Я вижу это совсем немного, и это лениво.