Легко узнать и использовать платформу .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
НТН
Кости