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

时间:2016-12-09 21:21:41

标签: 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",但这似乎会引起其他问题。执行此操作后,我收到此错误消息:

Error Message

其他可能有用的信息:

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

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

1 个答案:

答案 0 :(得分:6)

我们最终找到的解决方案是通过转到属性>将有问题的数据库的遗产基数估算更改为开启。 SSMS中的选项。这使我们能够在数据库上保持对SQL Server 2016的兼容级别。

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

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

可以在Entity Framework的GitHub页面here上找到让我们做出此更改的问题。实体框架的贡献者似乎没有找到他们的错误并将其交给SQL Server团队,但是在发布时没有实现修复(据我所知)。