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

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

有人做了我想做的事吗?再次,我尝试编写一个应用程序,可以使用实体框架以最少的努力从 SQL Server 或 Oracle 数据库查询(和更新)数据。第二个目标是在数据存储之间来回切换时不必重新编译应用程序。如果我必须“从数据库更新模型”,这可能没问题,因为我不必重新编译,但我不想走这条路。有谁知道可能需要采取哪些步骤?

有帮助吗?

解决方案

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

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

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

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top