Когда вы говорите Касл, я предполагаю, что вы имеете в виду Касл Актив Рекорд?
Разница в том, что NHibernate является OR / M и нацелен на разработчиков, которые хотят сосредоточиться на домене, а не на базе данных. Благодаря linq to sql ваша база данных уже существует, и вы связаны, и часть программирования будет зависеть от того, как определена ваша база данных.
Теперь между NHibernate и Castle ActiveRecord - они похожи в том, что вы выгоняете дизайн своего приложения из домена, но с помощью NHibernate вы предоставляете сопоставление XML-файлов (или сопоставление классов с беглым NHibernate), где в Active Record вы используете соглашение по конфигурации (использование атрибутов для определения любых столбцов и параметров, которые не подходят естественным образом). Запись Castle Active по-прежнему использует NHibernate в фоновом режиме.
Один OR / M не обязательно является «единственным верным путем». Это зависит от вашей среды, приложения, которое вы разрабатываете, и вашей команды.
Вы также можете проверить SubSonic . Это здорово для активной записи, но это не для проекта, где вы хотите сосредоточиться в основном на своем Домене. В зависимости от проекта я обычно использую NHibernate (с Castle Active Record) или Subsonic