Улучшение нашей текущей структуры - проблема в том, что для этого нужно приложить немало усилий
В вашем вопросе вы не указали причину, по которой вам следует переписать функциональность, доступную во многих других местах. Я бы посоветовал, чтобы переосмысление ORM не использовало ваше время, если только у вас нет уникальных потребностей в ORM, которые вы не указали в своем вопросе.
ADO.NET Entity Framework
Мы используем Entity Framework в реальном мире для производства программного обеспечения. Сложно? Насколько я могу судить, не больше, чем большинство других ORM, , то есть "довольно сложное". Однако, оно относительно новое, и поэтому у сообщества меньше опыта и документации, чем у чего-то вроде NHibernate. Так что отсутствие документации вполне может сделать его более сложным.
Entity Framework и NHibernate используют совершенно разные подходы к проблеме преодоления объектно-реляционного разрыва. Я написал об этом более подробно в этом блоге . Вы должны подумать, какой подход имеет для вас наибольшее значение.
Было много комментариев по поводу Entity Framework, как положительных, так и отрицательных. Часть этого обоснована, а некоторые, кажется, исходят от людей, которые выдвигают другие решения. Обоснованная критика включает
- Отсутствие поддержки POCO. Это не проблема для некоторых приложений, это проблема для других. Поддержка POCO, вероятно, будет добавлена в будущем выпуске, но сегодня лучшее, что может предложить Entity Framework, - это IPOCO.
- Файл монолитного отображения. Для нас это не было большой проблемой, поскольку наши метаданные не постоянно меняются.
Однако мне кажется, что некоторые из критических замечаний пропускают лес за деревьями. То есть они говорят о функциях, отличных от основных функций реляционного сопоставления объектов, которые Entity Framework доказал нам, что они очень хорошо справляются.
LINQ to SQL - не имеет хорошей обработки объектно-ориентированных практик
Я согласен. Мне также не нравится фокус SQL Server.
nHibernate - кажется хорошим вариантом, но некоторые пользователи сообщают о слишком большом количестве архаичных ошибок.
Что ж, хорошо в NHibernate является то, что вокруг него очень живое сообщество, и когда вы действительно сталкиваетесь с этими эзотерическими ошибками (и, поверьте мне, Entity Framework также имеет свою долю эзотерических ошибок; территории), вы часто можете найти решения очень легко. Тем не менее, у меня не так много личного опыта работы с NHibernate, кроме оценки, которую мы провели, что привело нас к выбору Entity Framework, поэтому я позволю другим людям с более непосредственным опытом прокомментировать это.
SubSonic - из короткого вступления он кажется слишком гибким. Я этого не хочу.
SubSonic, конечно, намного больше, чем просто ORM, и пользователи SubSonic имеют возможность выбрать другую реализацию ORM вместо использования ActiveRecord SubSonic. В качестве фреймворка веб-приложений я бы это рассмотрел Тем не менее, его функция ORM не является его смыслом, и я думаю, что разумно предположить, что часть ORS SubSonic будет уделять меньше внимания, чем специализированные платформы ORM.