8

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

我有一个架构极其相似的 Oracle 数据库(我试图准确,但我不知道 Oracle 的所有细节)。我希望我的项目能够轻松地在 SQL Server 和 Oracle 数据存储上运行。我希望我可以简单地更改我的实体数据模型的配置字符串,而实体框架会处理剩下的事情。但是,它似乎不会像我想的那样无缝地工作。

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

4

2 回答 2

2

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

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

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

于 2008-09-17T13:07:19.777 回答
1

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

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

于 2008-09-17T00:45:07.893 回答