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

Chr*_*nde 4 c# asp.net entity-framework edmx

我有一个问题,我使用Entity Framework Database First方法生成了多个EDMX和模型,这些模型最初映射到远程SQL Server 2012实例上的表/存储过程.现在我们已经迁移到SQL Server 2016,每当我们尝试通过添加新表,刷新模型等来更新这些EDMX模型时,更新向导将无限期地冻结.

我已经就这个问题做了一些研究,我已经看到有些人幸运地改变了有问题的数据库的兼容性水平,但是如果可能的话,这是我们想要避免的.迁移后,对服务器上的所有数据库的兼容级别设置为SQL Server 2016(130),特别是针对每个Microsoft数据库顾问的查询优化目的.

我尝试手动更改的东西是EDMX的XML内容中的ProviderManifestToken,它将它从"2012"设置为"2016",但这似乎会导致其他问题.这样做之后我收到此错误消息:

错误信息

其他可能有用的信息:

  • 使用Visual Studio 2015
  • 实体框架版本6.1.3

有没有人有幸从他们的数据库迁移到SQL Server 2012到2016,同时保持对自动生成的Entity Framework模型的干净映射?似乎会有一个内置工具来清理EDMX,以便干净地映射到新的和更新的SQL Server实例.

Chr*_*nde 7

我们最终找到的解决方案是通过转到SSMS中的"属性">"选项",将相关数据库的Legacy Cardinality Estimation更改为ON.这使我们能够在数据库上保持对SQL Server 2016的兼容级别.

另外需要注意的是,在Visual Studio中通过更新向导更新这些模型时,模型似乎需要永远更新; 我们最终让向导运行了一夜,我们的一个数据库的模型终于在大约6个小时后完成更新.因此,他们最终将完成更新,但不是在一个现实的时间框架内供某人使用.

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

那放倒我们关闭以使这种变化的问题可以实体框架的GitHub的页面上找到这里.实体框架的贡献者似乎没有发现它们的错误并将其交给SQL Server团队,但是在发布时没有实现修复(据我所知).