NHibernate определенно более сложный, но с этой сложностью достигается большая гибкость. Subsonic великолепен, но вы также должны знать, что это в значительной степени проект с открытым исходным кодом, и хотя в настоящее время он стабилен, за ним не стоит активное сообщество разработчиков, как это делает NHibernate.
Еще одна вещь, о которой следует знать, это то, что subsonic - это своего рода «генератор кода», где он на самом деле будет генерировать кучу вещей для вас. NHibernate - это ORM в буквальном смысле, в котором вы отображаете объекты в своей базе данных. Вы можете использовать генераторы кода для генерации отображений для вас, но это принципиально иное представление об ORM.
Лично, если вы посмотрите на subsonic и обнаружите, что в нем есть все, что вам нужно, чем я бы посмотрел на это, или, возможно, даже linq to sql, однако, если вы обнаружите, что сталкиваетесь с более сложными объектными проблемами, то, возможно, NHibernate стоит учиться.