Поддержка базы данных в NHibernate против Entity Framework 4.1 - PullRequest
3 голосов
/ 30 августа 2011

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

Я колеблюсь между NHibernate и EntityFramework 4.1.

Я знаю, что NHibernate поддерживает разные базы данных (например, SQL Server, MySQL, Oracle и т. Д.), Не так ли?

А как насчет Entity Framework? Я не могу найти, какие базы данных он поддерживает (я полагаю, это не зависит от базы данных, но я не очень уверен). Например, я не смог заставить его работать с MySQL (с MySQL Connector 6.4.3).

Ответ, который я хочу получить, касается только поддержки различных баз данных. В stackoverflow есть некоторая информация о «NHibernate против Entity Framework».

Ответы [ 2 ]

7 голосов
/ 30 августа 2011

Из коробки NHibernate поддерживает следующие:

  • Microsoft SQL Server (включая Compact Edition)
  • Oracle
  • Microsoft Access
  • Firebird
  • PostgreSQL
  • DB2 UDB
  • MySQL
  • SQLite

Должен быть установлен соответствующий поставщик ADO.NET. В дополнение к провайдеру ADO.NET, NHibernate нужны свои собственные «драйвер» и «диалект», если вы хотите расширить их для поддержки базы данных, которой нет в списке.

7 голосов
/ 30 августа 2011

Запрос Entity Framework переводится в окончательную форму (отправляется в БД) тремя «слоями»:1. Объектные услуги2. EntityClient Data Provider3. Поставщик данных ADO .NET.Уровень Object Services является компонентом Entity Framework, который позволяет запрашивать, вставлять, обновлять и удалять данные с использованием общеязыковых сред выполнения (CLR), которые являются экземплярами типов сущностей.Entity Framework включает в себя поставщик данных EntityClient, который управляет соединениями, преобразует запросы сущностей в запросы, специфичные для источника данных, и возвращает средство чтения данных, которое Entity Framework использует для материализации данных сущностей в объекты. Традиционный ADO.NET по-прежнему используется для связи с базовой базой данных.

Что это значит?Это означает, что Entity Framework был разработан, чтобы быть независимым от базы данных.Вы можете использовать его с любой базой данных, если поставщик базы данных создал поставщика для ADO .NET (который существует для MySQL, Oracle и т. Д.).Для MySQL вы должны иметь возможность использовать EF с упомянутым вами коннектором (подробнее: http://dev.mysql.com/doc/refman/4.1/en/connector-net-visual-studio-entity-framework.html)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...