关于oracle:如何使用实体框架实现数据库独立

关于oracle:如何使用实体框架实现数据库独立

How to Implement Database Independence with Entity Framework

我已经使用实体框架启动了一个相当简单的示例项目。在项目中,我从SQL Server 2000数据库创建了一个新的实体数据模型。我可以使用LINQ to Entities查询数据并在屏幕上显示值。

我有一个具有极为相似的架构的Oracle数据库(我想确切地说,但我不知道Oracle的所有详细信息)。我希望我的项目能够以最小的努力在SQL Server和Oracle数据存储上运行。我希望我可以简单地更改实体数据模型的配置字符串,而实体框架将负责其余的工作。但是,似乎无法像我所想的那样无缝运行。

有人做过我想做的事情吗?同样,我尝试编写一个可以使用实体框架以最小的努力查询和更新SQL Server或Oracle数据库中的数据的应用程序。第二个目标是在数据存储之间来回切换时不必重新编译应用程序。如果我必须"从数据库更新模型"可能没问题,因为我不必重新编译,但是我宁愿不必走这条路。有谁知道可能需要的任何步骤?


在术语"持久性无知"下通常可以理解的是,您的实体类没有被框架依赖性所淹没(对于N层方案很重要)。现在不是这种情况,因为实体类必须实现某些EF接口(" IPOCO"),而不是普通的旧CLR对象。正如另一位发布者所提到的,为此,有一个称为持久性无知(POCO)适配器的Entity Framework V1解决方案,而EF V2将立即支持POCO。

但是我认为您真正想到的是数据库独立性。通过一个包含存储模型,概念模型以及两者之间的映射的大型配置XML,可以在设计时从中生成类型化的ObjectContext,我也很难想象如何透明地支持两个数据库。

看起来更有希望的是应用独立于数据库的ADO.NET提供程序,例如DataDirect的提供程序。 DataDirect还宣布了对2008年第三季度的EF支持。


http://blogs.msdn.com/jkowalski/archive/2008/09/09/persistence-ignorance-poco-adapter-for-entity-framework-v1.aspx

主要问题是实体框架的设计没有考虑到持久性的无知。老实说,我会考虑使用除实体框架之外的其他东西。


推荐阅读