ORM Tool - Перекресток? - PullRequest
       24

ORM Tool - Перекресток?

2 голосов
/ 10 июля 2009

Привет. Я, кажется, на перекрестке ORM Tool и хотел бы получить совет от людей, столкнувшихся с подобной проблемой. В прошлом я использовал CodeSmith с шаблонами NetTiers для генерации моего DAL, все было довольно хорошо, однако я решил отказаться от этого по той или иной причине.

Итак, я на распутье и обнаружил следующее: -

  1. Я смотрел на PLINQO (Linq to SQL), который, кажется, отлично справляется со своей задачей, однако, поскольку Microsoft не уверена в Linq для SQL, это может быть не лучшим выбором.
  2. Linq to Entities - Это все еще в зачаточном состоянии, и я могу ошибаться, но люди жалуются на раздувание и то, как хранимые процедуры
  3. Я смотрел на nHibernate, возможно, это лучший выбор, но, похоже, это крутая кривая обучения
  4. То же самое для LLblgen
  5. Дозвуковой - Не уверены в этом?
  6. Придерживайтесь проверенных и протестированных NetTiers, забудьте о блате, забудьте, что вы вынуждены использовать корпоративную библиотеку, забудьте динамический sql, который она создает, забудьте, что их почти нет на форумах, забудьте об этом и используйте его!

У меня уже есть Codesmith, и я не хочу ничего покупать, сгенерированный код должен работать в режиме Medium Trust ...

Могут быть и другие, которые я пропустил. Я ищу ответы, которые объясняют, почему ORM Tool стоит посмотреть.

Спасибо, Ричард

Ответы [ 5 ]

2 голосов
/ 10 июля 2009

Я сам использовал .netTiers в последнем проекте. но на той, на которой я работаю в данный момент, мы пробуем Linq 2 Entities. Вы правы в том, что Linq2EF не зрелый. Мы все время об этом говорим, поэтому используем шаблоны T4, которые генерируют код из файла EDMX. Мы также изменили эти шаблоны, чтобы у нас были бизнес-объекты, интерфейсы для внедрения и DAL + DAO. Мы рады тому, как это работает сейчас. Хорошо, что мы можем использовать LINQ против сущностей.

В противном случае я бы также предложил вам Свободный nHibernate ( ссылка ). Это была одна из вещей, которую мы также рассмотрели. Но вам придется написать много вещей самостоятельно. Это не так, как вы привыкли в .netTiers, где весь код генерируется для вас.

Поскольку Subsonic 3 ( link ) всего около недели, я предлагаю вам проверить это. Исходя из того, что я видел, это выглядит очень многообещающе. И он использует T4, так что вы можете нарезать его и нарезать кубиками в соответствии с вашими потребностями.

1 голос
/ 29 июля 2009

Вы можете попробовать DataObjects.NET. Этот ORM использует подход «сначала код», поддерживает обновление схемы БД и LINQ. Проверьте это краткое описание http://www.x -tensive.com / Products / DO / .

1 голос
/ 10 июля 2009

Я попробовал несколько в течение нескольких недель и, наконец, остановился на NHibernate. Это очень легко настроить. Существует кривая обучения, и требуется немного больше времени, чтобы настроить что-то вроде linq to sql, но плюс в том, что это не похоже на магию. Вы поймете, как это работает, и сможете настроить его именно под свои нужды. Сообщество также очень хорошо, и есть много доступной документации. Мне кажется, это хороший баланс между современным ORM (без генерации кода, можно использовать POCO) и зрелостью.

0 голосов
/ 11 июля 2009

Я думаю, что сейчас наиболее авторитетными и мощными инструментами ORM являются nHibernate и LLBLGen Pro .

nHibernate = Очень ориентированный на домен.

LLBLGen Pro = Ориентация на данные.

Они оба превосходны, и для каждого проекта, в зависимости от его характера, один может быть более подходящим по сравнению с другим. Это также часто сводится к личному выбору и предпочтениям или даже культуре команды разработчиков.

Как я уже сказал, в конце концов, в целом, они оба превосходны, и у них обоих есть свои небольшие преимущества / недостатки.

0 голосов
/ 10 июля 2009

По причинам использования 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, но в конце концов, это зависит от того, что вам больше всего удобно.

...