【问题标题】:Entity Framework Oracle and Sql Server - how to build a database independent applicationEntity Framework Oracle 和 Sql Server - 如何构建独立于数据库的应用程序
【发布时间】:2012-01-24 14:06:47
【问题描述】:

我们正在尝试构建一个数据访问层以同时使用 Oracle 和 SQL Server(不是同时)。

我们使用 EF 模型优先来创建模型并创建 SQL 脚本来构建数据库。我们的第一个想法是创建 2 个 EDMX 文件,每种类型一个,并根据客户的需要使用适当的文件。我们正在使用 Oracle 和 SQL Server 数据库生成工作流和 DDL 生成模板来为每个数据库创建脚本。

我们的主要问题是当数据库架构发生变化时,我们不想删除并重新创建数据库,而只想创建迁移脚本以根据我们的模型更新数据库(客户端有很多数据会丢失)。

我们使用 EF 电源包来提取 SQL Server 的迁移脚本,但对于 Oracle,没有类似的东西。

我们希望帮助我们找到一个好的数据层(如果可能且不复杂,则为 Oracle 和 SQL Server 提供 1 个 EDMX)以及从我们的模型生成数据库更改以在新应用程序的情况下更新现有客户端数据库的好方法发布

我们发现这是一个起点 http://msdn.microsoft.com/en-us/data/ff830362 但没有提及 Oracle 支持。

我们已经尝试过代码优先和 EF 迁移,但 Oracle 在数据库创建和迁移方面再次失败了。

关于我们如何实现这一点的任何建议?

谢谢

【问题讨论】:

    标签: sql-server database oracle entity-framework-4.1 migration


    【解决方案1】:

    没有办法为 SQL Server 和 Oracle 提供单一的 EDMX。 EDMX 由 CSDL(实体定义)、SSDL(数据库定义)、MSL(这些定义之间的映射)三部分组成。 SSDL 必须始终以具体数据库为目标,因此您至少需要为 Oracle 和 SQL Server 提供单独的 SSDL,如果幸运的话,您也不需要单独的 MSL(映射必须完全相同,如果您使用任何工具生成,这可能不会发生数据库)。

    因此,您始终需要至少部分 EDMX 文件用于第二个数据库并手动维护它。

    如果您需要支持 Oracle 的数据库迁移,您必须从 Oracle(或第三方)寻找工具。例如,RedGateSQL ServerOracle 提供支持架构迁移的工具。

    Visual Studion 高级版和旗舰版还提供了用于比较数据库模式的工具。默认情况下它只支持 SQL Server,但Toad Extensions 也应该添加对 Oracle 的支持。

    一旦您拥有这些工具中的任何一个,您只需将部署在客户服务器上的架构与您的新架构进行比较,该工具就会为您创建迁移脚本。

    【讨论】:

    • 感谢有这种独立性有点复杂。您是否尝试过 Telerik 的开放存取 ORM,它似乎可以完成我们正在寻找的许多数据库,包括 SQL Server 和 Oracle,并且它可以处理迁移?
    【解决方案2】:

    我在这个主题上找到的最好的文章来自Paul Reynolds Blog。 尝试从第 5 部分到第 9 部分。

    那里提到了很多关于 Oracle 的问题......非常有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 2014-08-18
      • 2016-09-11
      • 1970-01-01
      相关资源
      最近更新 更多