У меня есть приложения на основе NHibernate, и хотя это лучше, чем у большинства DAL, я не могу больше рекомендовать использовать NHibernate. Изощренность, необходимая для работы с сеансом для выполнения любого сложного приложения, просто абсурдна. Для создания простых приложений NHibernate очень прост для корпоративных приложений, сложность не по графику.
На этом этапе я решил решить вопрос доступа к данным с 3 различными вариантами в зависимости от области применения, используя базу данных документов (в частности, в настоящее время Raven) для полномасштабного применения, для средних объемов доступа к данным с использованием LinqToSql и для тривиального доступ Я на самом деле использую сырые соединения ADO.NET с большим успехом.
Для справки, эти утверждения сделаны после того, как я потратил более двух лет на разработку с использованием NHibernate, и каждый раз, когда я чувствовал, что полностью понял NHibernate, я сталкивался с каким-то новым ограничением или гигантским гаечным ключом иметь дело с. Это также привело меня к осознанию того, что я начал разрабатывать приложения в отношении NHibernate, что является одной из главных причин, по которой я использую ORM, чтобы не диктовать дизайн моих приложений базой данных.
Отсутствие необходимости иметь дело с управлением сессиями со сложностью NHibernate было для меня одним из самых больших преимуществ при переходе на RavenDB. В Raven вам практически не нужно управлять сессией, кроме случаев, когда вы проводите экстремальную оптимизацию производительности или работаете с пакетными действиями.