数据库迁移后更新 Entity Framework 个 EDMX 模型

Updating Entity Framework EDMX Models After Database Migration

我有一个问题,我使用 Entity Framework 数据库优先方法生成了多个 EDMX 和模型,并且这些模型被映射到远程 SQL Server 2012 上的 tables/stored 过程实例最初。现在我们已经迁移到 SQL Server 2016,每当我们尝试通过添加新表、刷新模型等来更新这些 EDMX 模型时,更新向导会无限期地冻结。

我对这个问题做了一些研究,我看到有些人幸运地更改了相关数据库的兼容级别,但这是我们希望尽可能避免的事情.迁移后,服务器上所有数据库的兼容性级别设置为 SQL Server 2016 (130),我们的 Microsoft 数据库顾问专门用于查询优化目的。

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

Error Message

其他可能有用的信息:

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

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

另外请注意,在 Visual Studio 中通过更新向导更新这些模型时,这些模型似乎需要很长时间才能更新;我们最终离开向导 运行 一夜之间,我们其中一个数据库的模型终于在大约 6 小时后完成更新。所以他们最终会完成更新,但不是在现实的时间范围内供某人使用。

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

提示我们进行此更改的问题可以在 Entity Framework 的 GitHub 页面 here 上找到。 Entity Framework 的贡献者似乎没有发现他们的错误并将其移交给 SQL 服务器团队,但在发布此帖子时尚未实施任何修复(据我所知) .