chr*_*sst 8 database sql-server migration oracle entity-framework-4.1
我们正在尝试构建一个数据访问层,以便同时使用Oracle和SQL Server(而不是同时).
我们使用EF Model-first来创建模型并创建用于构建数据库的SQL脚本.我们的第一个想法是创建2个EDMX文件,每种类型一个,并根据客户的需要使用适当的文件.我们使用Oracle和SQL Server数据库生成工作流程和DDL生成模板为每个数据库创建脚本.
我们的主要问题是当数据库模式发生变化时,我们不想删除并重新创建数据库,而只创建迁移脚本来更新我们模型上的数据库(客户端有许多数据会丢失).
我们使用EF power pack来提取SQL Server的迁移脚本,但Oracle没有类似的东西.
我们需要帮助来找到一个好的数据层(如果可能而且不复杂,可以为Oracle和SQL Server提供1个EDMX)以及在我们的模型中生成数据库更改以便在新应用程序发布时更新现有客户端数据库的好方法
我们发现这是一个起点 http://msdn.microsoft.com/en-us/data/ff830362但是没有提到Oracle支持.
我们尝试过代码优先和EF迁移,但Oracle在数据库创建和迁移方面再次失败了.
关于如何实现这一目标的任何建议?
谢谢
无法为 SQL Server 和 Oracle 提供单一 EDMX。EDMX 由三部分组成:CSDL(实体定义)、SSDL(数据库定义)、MSL(这些定义之间的映射)。SSDL 必须始终针对具体数据库,因此您至少需要针对 Oracle 和 SQL Server 的单独 SSDL,如果幸运的话,您也不需要单独的 MSL(映射必须完全相同,如果您使用任何工具来生成映射,则可能不会发生这种情况)数据库)。
因此,您始终需要至少部分 EDMX 文件作为第二个数据库并手动维护它。
如果您需要支持 Oracle 的数据库迁移,您必须寻找 Oracle(或第三方)的工具。例如,RedGate提供了支持SQL Server和Oracle架构迁移的工具。
Visual Studion Premium 和 Ultimate 版本还提供了用于比较数据库架构的工具。默认情况下,它仅支持 SQL Server,但Toad Extensions也应该添加对 Oracle 的支持。
一旦您拥有这些工具中的任何一个,您只需将客户服务器上部署的架构与新架构进行比较,该工具就会为您创建迁移脚本。