提问者:小点点

数据库迁移后更新实体框架EDMX模型


我有一个问题,我使用实体框架数据库优先方法生成了多个EDMX和模型,而这些模型最初被映射到远程SQL Server 2012实例上的表/存储过程。既然我们已经迁移到SQL Server 2016,每当我们试图通过添加新表,刷新模型等方式更新这些EDMX模型时,更新向导就会无限期冻结。

我已经做了一些关于这个问题的研究,我看到有些人很幸运地改变了数据库的兼容性级别,但是如果可能的话,这是我们希望避免的。迁移之后,服务器上所有数据库的兼容级别都被设置为SQL Server 2016(130),这是我们的Microsoft数据库顾问出于查询优化目的而设置的。

我曾尝试手动更改EDMX的XML内容中的ProviderManifestToken,将其从“2012”设置为“2016”,但这似乎会引起其他问题。执行此操作后,我会收到以下错误消息:

错误消息

其他可能有用的信息:

是否有人幸运地将数据库从SQL Server 2012迁移到2016,同时保持与自动生成的实体框架模型的清晰映射?似乎会有一个内置的工具来清理EDMXs,以便干净地映射到SQL Server的新的更新实例。


共1个答案

匿名用户

我们最终发现的解决方案是,通过转到Properties&>,将所讨论的数据库的遗留基数估计更改为ON;SSMS中的选项。这使我们可以将数据库的兼容级别设置为SQL Server2016。

另外,当通过Visual Studio中的“更新向导”更新这些模型时,这些模型似乎要花费很长时间才能更新;最后,我们让向导运行了一夜,其中一个数据库的模型在6个小时后终于完成了更新。所以他们最终将完成更新,但不是在一个现实的时间框架内与某人一起工作。

在进行配置更改后,模型将立即更新,正如人们所期望的那样。

在EntityFramework的GitHub页面中可以找到促使我们做出此更改的问题。Entity Framework的贡献者似乎还没有发现自己的错误,并将其交给了SQL Server团队,但在本文发表时(据我所知)还没有实现任何修复。