2011-08-30 58 views
3

我正在研究不同的ORM,以用于我必须开发的新Web应用程序。NHibernate vs Entity Framework 4.1中的数据库支持

我在NHibernate和EntityFramework 4.1之间犹豫不决。我知道NHibernate确实支持不同的数据库(比如SQL Server,MySQL,Oracle等等)。不是吗?我不知道NHibernate是不是支持不同的数据库

实体框架呢?我找不到它支持的数据库(我认为它是数据库不可知的,但我不太确定)。例如,我无法使它运行MySQL(使用MySQL连接器6.4.3)。

我想要的答案只是关于对differents数据库的支持。在“NHibernate vs Entity Framework”中有一些关于stackoverflow的信息。
1.对象服务
2. EntityClient数据提供
3. ADO .NET数据提供:

回答

7

实体框架查询由三个 “层次” 翻译成最终形式(发送到DB)。
对象服务层是实体框架的一个组件,它使您能够使用公共语言运行时(CLR)对象执行查询,插入,更新和删除数据,其中 是实体类型的实例。
实体框架包含EntityClient数据提供程序,该提供程序管理连接,将实体查询转换为特定于数据源的查询,并返回实体框架用于将实体数据实体化为对象的数据读取器。
传统的ADO.NET仍然用于与底层数据库进行通信。

这是什么意思?这意味着实体框架被设计为数据库独立。如果数据库提供者为ADO .NET创建提供程序(对于MySQL,Oracle等存在),则可以将其与每个数据库一起使用。
对于MySQL,你应该能够使用与连接器EF,你已经提到(详细信息:http://dev.mysql.com/doc/refman/4.1/en/connector-net-visual-studio-entity-framework.html

7

开箱NHibernate的supports如下:

  • 的Microsoft SQL Server(包括精简版)
  • 甲骨文
  • 的Microsoft Access
  • 火鸟
  • 的PostgreSQL
  • DB2 UDB
  • MySQL的
  • SQLite的

通讯ADO.NET提供商需要安装。除了ADO.NET提供者,如果你想扩展它来支持不在列表中的数据库,NHibernate需要自己的'驱动程序'和'方言'。

+0

非常感谢您的回答 –

相关问题