2010-12-28 4 views
3

В: Этот вопрос касается того, как я могу выбрать или выбрать удобный ORM для своего веб-приложения. при запуске нового веб-приложения, Каковы критерии, по которым я могу рассмотреть конкретный ORM, лучше, чем другой для моего проекта или дела (веб-приложение)?ORM, на каких стандартах я могу выбрать?

другая часть моего вопроса: когда я начала любого веб-приложения, я использую три слоя:

  1. слой DB (который содержит соединения, и обрабатывать Crud операции)
  2. Менеджеры layer (Data Access Layer) класс для каждой таблицы на моем db (слабо связан с предыдущим слоем ), он содержит операции CRUD для конкретной таблицы , а другой требуется o военные действия.
  3. граничный слой ..

и я использовать источник данных объекта. Это считается ORM (как концепция), или я ошибаюсь в понимании этой концепции.

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

Заранее спасибо.

+2

Какая СУБД вы используете? –

+0

часто я использую SQL Server, но иногда я использую mysql или informix .. –

+0

Я работаю только с linq2sql. Как я знаю, linq2sql поддерживает только MSSQL. –

ответ

8

Что касается ОРМ, это все о вкусе. nhibernate и Entity framework являются наиболее распространенными.

+0

вкус, я думаю, что есть некоторые критерии, и я спрашиваю о них, а что касается sql для linq .. –

+1

Критерии - это то, что подходит для ваших нужд. Я поклонник Subsonic, и я использую его, хотя иногда мне приходится немного заниматься этим, но мне просто нравится. – TheVillageIdiot

1

Как уже упоминалось ранее, @MikeAinOz, что Entity Framework является хорошим началом, в котором вы также можете подключиться к другим базам данных. Этот пример также является хорошей отправной точкой о том, как слои программ:

http://layersample.codeplex.com/releases/view/47627

1

Самые известные из них: nhibernate и EF, Лично я предпочитаю EF, это скорость лучше, чем nhibernate (через linq), а для работы с EF я думаю, что Code First - самый полезный запуск.

Для выбора, который ORM (между EF и NHibernate) вы можете увидеть this blog по Ayende Rahien, которые знают хорошо о NHibernate, на этом посту он сказал, что зрелость NHibernate лучше, но linq2EF лучше, чем NHibernate, простой пример смогу дайте вам: у вас есть двухуровневая основная деталь, в nhibernate вы должны сделать hql для извлечения элементов с конкретными критериями из подробного элемента, но в EF вы можете сделать это просто. Также в EF есть Entity Functions, которые были преобразованы для решения проблем, и я надеюсь, что это будет более полезно в будущем.

+0

Обратите внимание, что в нижней части сообщения Айенде он утверждает, что NH3 (с его новым провайдером linq) закроет разрыв в производительности Linq. NH3 пошел GA несколько недель назад. Я использую его какое-то время, и я очень доволен его производительностью по сравнению с NH2. – Brook

+0

@Brook, вы знаете, что nhibernate3 реализован SelectMany в linq? Мне очень интересно найти SelectMany, как можно изменить для работы в nhibernate. –

3

Я использую Devart LinqConnect для малых и средних проектов (особенно для веб-проектов), и я использую Entity Framework для больших проектов. Эти продукты удобны и гибки и позволяют быстро начать работу. LinqConnect включает поставщиков, которые позволяют работать с Oracle, MySQL, PostgreSQL, SQLite. Я использую сторонние провайдеры для настройки Entity Framework.

5

Вы не найдете конкретные критерии выбора - это дело вкуса и предпочтений, но вы можете найти сравнительные характеристики here

1

Я читал книгу на спящем режиме ребят, писавших спящий режим и широкое определение, которое отображает реляционную модель в объектную модель (ex-преобразование внешнего ключа в содержащийся объект [s]), является ORM.

Авторы поставить ORMS в другую категорию, что-то вроде NHibernate попадает в категорию полного ОРМ, он генерирует SQL во время выполнения для экс ..

Некоторые другие инструменты, такие как LLBGen нужно что статические библиотеки DLL будет создан подключаясь к БД, а затем они используются.

При выборе ORM вы должны посмотреть на базу пользователей, если активна ORM, бывшие версии и быстрые исправления ошибок позднего Hibernate, вероятно, наиболее широко используются, в .net есть Fluent Nhibernate, который может настраиваться без файлов xml, спящий использует для этого аннотированные классы.

Лично я бы посоветовал вам использовать ORM на основе Hibernate, в ROR активной записи является стандартным, я думаю ...

1

Для мировой палочки Microsoft с ado.net рамками объекта
Для открытого исходного кода мировой палочки с nhibernate.

1

Что касается простого доступа к базе данных, похоже, есть много мнений, по которым это лучший способ получить доступ к базе данных.

В настоящее время я использую NHibernate, который отлично работает в MS Sql и MySql. Я нашел запись в блоге, в которой показано, как подключиться к MYSQL с помощью Nhibernate here.

Решающим фактором для меня будет поиск базы данных, которую вы собираетесь использовать, а затем принятия решения оттуда. Скотт Гатри объявил о первой структуре кода, которая использует сущность framework версии 4. Хотя я знаю, что Entity Framework 4.0 работает с Mysql (link), я не уверен в Code First. Учебник для Code First Development можно найти here.

В конечном счете, я думаю, что все они выполняют почти ту же работу, хотя, если бы я начинал смотреть на ОРМ и хотел чего-то простого, я мог бы пойти с подходом Code First, поскольку это кажется очень легким. НО У меня нет опыта с этим. Я только что прочитал об этом.

Надеюсь, это поможет.