Рамки ORM - PullRequest
       31

Рамки ORM

5 голосов
/ 28 мая 2009

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

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

Ответы [ 6 ]

6 голосов
/ 28 мая 2009

Я использовал NHibernate и Entity Framework.

Текущая стабильная версия структуры сущностей очень незрелая. Это слишком сложно или невозможно выполнять общие задачи. Тестирование вашего кода также сложно, так как вы не можете отделить свои сущности от классов доступа к данным. Но он прекрасно вписывается в визуальную студию ide. Настройка проста, а обновление всех моделей из базы данных занимает всего несколько секунд. Следующая версия EF (4.0) решит некоторые из этих проблем.

NHibernate довольно мощный. Он поддерживает простые старые объекты clr, поэтому вы можете работать с простыми объектами. Конфигурации обеспечивают отличный контроль в мельчайших деталях. Возможности фреймворка удовлетворительные, и у него большое и активное сообщество и хорошая документация. Настройка и обновление сущностей немного сложны, так как вы должны использовать генераторы, которые ищут вашу базу данных и генерируют сущности и XML-файлы. Может быть сложно найти генератор или шаблон, который точно соответствует вашим потребностям. Но как только вы все настроите, вам это понравится.

3 голосов
/ 28 мая 2009

Я нашел LINQ to SQL довольно простым решением. В первый раз, когда я использовал его, я бы сказал, что у меня был базовый ORM, работающий в течение нескольких часов, и он создавал запросы LINQ с его помощью.

Microsoft имеет дополнительный ORM (Entity Framework), который, как я слышал, является более сложным, но может быть полезен для очень сложных распределенных приложений с несколькими источниками данных и т. Д.

В целом, LINQ оказался простым и быстрым в использовании ORM.

2 голосов
/ 28 мая 2009

Я смотрю на Telerik Open Access в течение последних нескольких месяцев, в общем и целом с этим ORM было трудно работать, его рекламировали как имеющую обширную поддержку linq, но в действительности многие функции linq, которые вы обычно ожидаете, не работают на стороне сервера и выполняются на клиенте. У меня также были проблемы с использованием нескольких условий в предложении where, см. Мой последний вопрос . Вот несколько вещей, которые я нашел

  • Нет поддержки просмотров
  • Невозможно отобразить более одного объекта в одну таблицу
  • Поддержка наследования и интерфейса требует внесения изменений в схему базы данных
  • Нет визуального дизайнера, такого как LINQ to SQL и Entity Framework
  • Если вы хотите выполнить вставку, сначала должны быть извлечены любые связанные объекты

Rohan

1 голос
/ 28 мая 2009

LINQ2SQL был хорош, EF имеет смысл, но очень сложен и ориентирован на SQL Server. NHibernate особенный, а Telerik OpenAccess (полностью .NET / Visual Studio) получил широкий набор функций и профессиональную поддержку.

Поскольку я знаю продукт, я могу прокомментировать опасения Рохана:

  • Можно использовать существующие представления, и в ближайшее время появится полная поддержка представлений
  • Отображение более чем одной сущности в одну и ту же таблицу «работает» для иерархий классов, существует ограничение с обратным отображением
  • Наследование и поддержка Интерфейсера "не требуют" изменений в схеме базы данных, опять же существует ограничение с обратным отображением, хотя
  • Придет Visual Designer, мастера прямого и обратного сопоставления позволяют вам уже что-либо делать простым способом
  • Существует обходной путь для упомянутой проблемы вставки, и он будет исправлен, как правило,

Посетите сайт Telerik, чтобы найти счастливых клиентов, и не стесняйтесь использовать форумы Telerik и ресурсы поддержки для любого вопроса.

-Питер

0 голосов
/ 26 февраля 2017

С ORM существует множество возможностей, все зависит от того, что вы хотите.

Как настоящий картограф ORM, я настоятельно рекомендую NHibernate и Fluent NH отображений. Вам нужно много исследований, чтобы создать красивую архитектуру, но тогда ничто не мешает вам. С минимальными компромиссами вы получаете настоящую гибкость.

EF6x (ядро не готово к ИМХО) называется ORM, но то, что оно генерирует, ближе к DAL. Есть некоторые вещи, которые вы не можете сделать эффективно с EF6. Тем не менее, это мой любимый инструмент для модели чтения, хотя я комбинирую его с NHibernate (где NH я использую для модели DDD / записи).

Теперь о производительности - это всегда за и против. Если вы углубитесь в архитектуру ORM (см. Мою статью: избегайте вредных привычек ORM ), вы интуитивно найдете способы сделать это быстрее. Вот еще одна моя статья о том, как сделать EF6x 5x быстрее (по крайней мере для ситуаций чтения): EF6.x 5x быстрее

0 голосов
/ 03 июня 2012

Я новичок в OpenAccess ORM, и мы используем два продукта. Отчетность и OpenAccess. Я думаю, что есть некоторые особенности, которые люди пропустили.

  1. OpenAccess использует графические дизайнеры, тогда как nHibernate по-прежнему использует рукописные XML-файлы
  2. OpenAccess не ограничивается SQl Server как EF4 и аналогичными средами

использовать его проще, а форумы очень полезны.

...