Я тоже предпочитаю NHibernate и согласен с тем, что если вы приложите немного усилий к его изучению, вы поймете, что это не так сложно, как кажется на первый взгляд. Вы можете пройти долгий путь, не зная всех его возможностей.
Тем не менее, вы всегда должны выбирать правильный инструмент для работы под рукой. Если вы создаете приложение, которое приближается к реальной модели предметной области, тогда NHibernate IMO будет автоматическим выбором. Другие, о которых вы упомянули, - это не настоящие объектно-реляционные преобразователи, а генераторы кода. Само по себе это не обязательно плохо, но вы должны оценить, когда один подход более уместен, чем другой