По причинам использования ORM вот ссылка на сообщение в блоге Гленна Блока , в котором все сказано на самом деле. Что касается моего опыта, то чуть больше года назад я искал использование ORM и выбрал NHibernate.
Устойчивость ко мне - это решенная проблема, за пределами некоторой формы отображения моей доменной модели на мои реляционные данные, мне больше не о чем беспокоиться. Я посмотрел на Linq To SQL, но он просто не дал мне достаточного контроля над тем, как данные сопоставлялись с моими объектами, и Entity Framework был не настолько близко, насколько мне нравилось. Еще один крупный проект, над которым работала моя команда, использовал NetTiers и CodeSmith, и, как вы говорите, раздувание, генерация кода (и его огромное количество) заставили меня чувствовать себя немного странно. В конце концов, я выбрал NHibernate, потому что для меня это один из самых зрелых ORM, и он предоставил функции, которые не только поддерживали бы мелкозернистую объектную модель, но и встроили средства запросов и по своей сути решали другие проблемы производительности. такие как кеширование.
Да, я признаю, что кривая обучения довольно крутая, но если вы потратите время, выгоды, которые вы получите от этого, огромны. Блоги Ayende Rahien и Fabio Maulo представляют собой источник информации о NHibernate. Существует некоторая поддержка LINQ для NHibernate через этого поставщика LINQ , но Steve Strong в настоящее время объединяет функции, которые обеспечат полную поддержку LINQ в NHibernate. Так что все это для NHibernate, но в конце концов, это зависит от того, что вам больше всего удобно.