如何用实体框架实现数据库独立性

Yea*_*Stu 8 oracle linq-to-entities entity-framework

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

我有一个具有极其相似模式的Oracle数据库(我试图准确但我不知道Oracle的所有细节).我希望我的项目能够以最小的努力在SQL Server和Oracle数据存储上运行.我希望我可以简单地更改我的实体数据模型的配置字符串,实体框架将处理其余部分.但是,似乎无法按照我的想法无缝地工作.

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

小智 2

“持久性无知”一词通常被理解为您的实体类没有被框架依赖项淹没(对于 N 层场景很重要)。现在情况并非如此,因为实体类必须实现某些 EF 接口(“IPOCO”),而不是普通的旧 CLR 对象。正如另一位发帖者提到的,有一个名为Persistence Ignorance (POCO) Adapter for Entity Framework V1 的解决方案,EF V2 将支持 POCO 开箱即用。

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

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