Легко узнать и использовать платформу .NET ORM?

Примечание: Любой, кто приходит к этому вопросу сейчас, помните дату. Этот вопрос составляет почти 4 года, и информация относительно устарела. По моему опыту, NHibernate теперь относительно прост в использовании (с плавным интерфейсом), Entity Framework является законным соперником, и MicroORMS, такие как Dapper и Massive, становятся довольно популярными.


Мы переписываем одно из наших основных веб-приложений, и я, наконец, получил все от руководства, чтобы заменить ужасную путаницу хранимых процедур структурой ORM для реализации нашего уровня доступа к данным.

Ура для меня. Теперь я должен выбрать один.

Я немного поиграл со следующим

Теперь я знаю, что NHibernate является истинным выбором Alt.Netty, но проблема в том, что я работаю с подрядчиками, которые, насколько мне известно, никогда не слышали об этом, и NHibernate имеет репутацию довольно кривой обучения. Тем временем подзвуковое явление кажется гораздо более простым. Я также знаю о Entities Framework, но я опасаюсь его приема "meh" и Linq to Oracle, но я опасаюсь, что я почти ничего не слышал об этом.

Итак, вопросы:

  • Есть ли еще какие-то рамки, которые я должен рассмотреть?
  • Что вы рекомендуете для моей ситуации?

Еще несколько соображений:

  • Когда я говорю, что я немного играл с этими фреймворками, я имею в виду. Я настроил их и использовал их, чтобы вытащить некоторые данные, чтобы убедиться, что все это работает. Это его степень.
  • Это база данных Oracle (как вы могли предположить из включения Linq2Oracle)
  • Так как это переписывание, база данных уже существует и имеет стабильную схему
  • Я не слишком беспокоюсь о производительности. Наше приложение обычно обслуживает максимум пару человек одновременно.
  • Вы, ребята, те, кому придется отвечать на поток вопросов, которые у меня будут.

Я склоняюсь к Subsonic, но мне любопытно, что люди могут сказать.

Ответ 1

Вы проверили Telerik OpenAccess ORM? Недавно они приобрели Vanatec и их продукт ORM. Он поддерживает несколько платформ баз данных (включая Oracle), поддержку LINQ, форвардное и обратное сопоставление, интегрирован с Visual Studio и, на мой взгляд (при условии, что я несколько предвзято), является подходящей заменой для LINQ to SQL, если это то, легкость использования ", которую вы ищете.

Ответ 2

NHibernate позволит вам отделить объекты домена от вашего уровня данных. Он делает это с файлами сопоставления XML, чтобы описать отношения, и использует Castle DynamicProxy для создания свойств, которые ленивы.

NHibernate на несколько поколений превосходит всех по производительности, гибкости и настраиваемости. Однако, как вы сказали, это сложно. SubSonic очень прост, но он в основном генерирует статические классы прокси, основанные на вашей базе данных, поэтому у вас действительно не будет RM из ORM. IMO SubSonic, L2S и Castle ActiveRecord - все генераторы DAL, а не ORM.

ИМО все зависит от ваших потребностей. Если вы говорите 2-уровневый, то идите к одному из генераторов DAL. Это заставит вас двигаться быстрее, и ваша модель, вероятно, не настолько сложна, что вы не можете просто генерировать ее из вашей схемы db. Если у вас есть n-ярус, я бы настоятельно рекомендовал NHibernate. Конечно, кривая обучения выше (ее не ракетостроение, но она также не кнопка), однако она может фактически справиться с работой, которая вам нужна, и если вы используете одну из других, вы просто закончите много вещи в любом случае.

Ответ 3

CoolStorage.NET - моя рекомендация. Если вы застряли в .NET, это самое простое полнофункциональное решение.

Ответ 4

Оформить заказ XmlDataMapper простой бесплатный ORM (лицензия LGPL), который оставляет низкий объем памяти по сравнению с другими гигантами. Примерный проект должен быть достаточно хорошим, чтобы начать работу.

Чтобы интегрировать XmlDataMapper все, что вам нужно сделать, это 4 маленьких шага

  • Создание бизнес-объекта/DTO для таблиц
  • Создайте XML файл с информацией о сопоставлении между таблицей и DTO.
  • Укажите DTO и xml файл в конфигурации.
  • Просто вызовите DTOConverter.Convert(dataReader) и другие подобные методы, чтобы преобразовать вашу базу данных в DTO/Business Entity.

Ответ 5

Я бы пересмотрел вашу оценку Microsoft Entity Framework. Вы можете использовать поставщик DevArt DotConnect для Oracle в качестве решения до тех пор, пока Oracle не выпустит своего собственного провайдера в будущем. Используя Entity Framework, вы тогда не будете использовать "Linq to Oracle", а скорее "Linq to Entities", что намного лучше.

У меня были ОЧЕНЬ хорошие результаты при тестировании операций чтения с использованием Entity Framework, где операции чтения были ~ на 700% быстрее, чем у SqlCommand\SqlDataReader equivilent.

Ответ 6

Хорошо, что при рассмотрении ORM проблема

  • найти хорошую информацию об этом. Примеры, учебные материалы.
  • Достаточно ли люди используют его (продукт зрелый)? чем больше компаний используют его, тем более вероятны ошибки.

Когда я смотрю на рынок ORM для .Net, я нахожу все больше и больше материалов по NHibernate

Ссылки на полезные материалы о Nhibernate < - Видео, инструменты и лучшие практики

Замок построен на основе NHibernate (он использует шаблон активной записи)

У вас есть Google, чтобы узнать, есть ли у ORM какие-либо инструменты, которые помогут вам быстрее развиваться.

  • Telerick говорит, что он поставляется с VS-интерграфированием
  • У Nhibernate есть несколько инструментов для обратного проектирования БД на классы, также есть NHProf (не бесплатно), который контролирует SQL между NH и SQL

Если вы не находитесь в файлах сопоставления XML, посмотрите, можете ли вы найти сопоставления Fleunt. Это должно означать проверку времени компиляции (некоторые считают, что это проще для кода отладки/рефакторинга)

свободно nhibernate

НТН

Кости