【发布时间】:2014-12-10 14:49:36
【问题描述】:
我的项目(WPF、.Net 4.5、EF6)必须针对不同的 DBMS,到目前为止它是 MSSQL、Oracle、MySql 和 Firebird。 我首先创建生成数据库的依赖于 dbs 的脚本,然后使用 Entity Frameworks Database-First-approach 创建模型。通过使用基于 MSSQL 的默认 edmx 并为其他提供程序创建单独的 ssdl(可以在连接字符串中配置不同的 ssdl 文件),这对所有 dbms 都非常有效。 我现在看到的问题是为更多客户维护 4 个或更多不同 dbms 的安装/更新。我们不会派管理员为我们的客户安装更新,我们宁愿需要一个通用的设置/更新例程之类的东西。这是可能的,但您必须为每个 dbms 维护不同版本的 sql 脚本,并使用一种设置工具来处理这些脚本并知道为哪个数据库执行哪个(取决于 dbms 和当前版本)。
在寻找替代方案时,我遇到了 EF Code First Migrations 并尝试切换到这种方法。到目前为止,我的尝试都是基于 MSSQL 和 MySql。
当我坚持使用 MSSQL 或 MySql 时,一切都很好。创建迁移,将它们应用到现有或不存在的数据库,所有这些工作都很好。 但我坚持将两个系统结合在一起。例如,将基于 MSSQL 的迁移应用到 MySql 似乎是不可能的。将创建数据库,但由于类型不匹配等原因无法连接。 我的猜测是“__Migration”-Table 包含一个基于 MSSQL 创建的模型,现在与 MySql-provider 不兼容。只是一个理论,但也许有人知道得更好。
有人知道这个的解决方案吗?有没有办法用 EF 来定位不同的 dbms? 我不敢相信我是唯一一个有这个问题的人,但很难找到任何关于这个问题的信息。 感谢您提供任何帮助,甚至将我引向除以这种方式使用 EF 或完全使用 EF 之外的其他方法。
【问题讨论】:
标签: mysql sql-server database entity-framework entity-framework-migrations