我正在研究在我必须开发的新Web应用程序中使用的不同ORM。
我在NHibernate和EntityFramework 4.1之间犹豫不决。
我知道NHibernate确实支持不同的数据库(比如SQL Server,MySQL,Oracle等)。不是吗?
实体框架怎么样?我找不到它支持的数据库(我认为它与数据库无关,但我不太确定)。例如,我无法使用MySQL(使用MySQL Connector 6.4.3)运行它。
我想要的答案只是关于不同数据库的支持。 stackoverflow中有一些关于“NHibernate vs Entity Framework”的信息。
答案 0 :(得分:7)
实体框架查询由三个“层”转换为最终形式(发送到DB):
1.对象服务
2. EntityClient数据提供者
3. ADO .NET数据提供程序。
对象服务层是实体框架的一个组件,可用于此
使用公共语言运行时(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)
答案 1 :(得分:7)
开箱即用的NHibernate supports跟随:
需要安装相应的ADO.NET提供程序。除了ADO.NET提供程序之外,如果你想扩展它以支持列表中没有的数据库,NHibernate需要它自己的“驱动程序”和“方言”。