gpt4 book ai didi

c# - 数据库迁移后更新 Entity Framework EDMX 模型

转载 作者:太空狗 更新时间:2023-10-30 00:38:27 25 4
gpt4 key购买 nike

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

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

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

Error Message

其他可能有用的信息:

  • 使用 Visual Studio 2015
  • Entity Framework 版本 6.1.3

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

最佳答案

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

作为附加说明,当通过 Visual Studio 中的更新向导更新这些模型时,模型似乎需要永远更新;我们最终让向导运行了一整夜,我们其中一个数据库的模型终于在大约 6 小时后完成了更新。所以他们最终会完成更新,但不是在现实的时间框架内供某人使用。

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

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

关于c# - 数据库迁移后更新 Entity Framework EDMX 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41069105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com