升级提供程序版本
概述
在本节中,您可以识别在将提供商升级到新版本时必须对应用程序进行的必要更改。
在升级之前,执行以下操作
破坏性更改
破坏性更改是指从特定版本的提供商开始修改约定或行为的修改。这种类型的更改如果在升级提供商之前未解决,可能会阻止您的应用程序正常运行。
本节中的破坏性更改按引入它们的提供商版本进行分类。在升级提供商版本时,解决当前和升级版本之间的所有破坏性更改。例如,如果您要将提供商从 v8.0 升级到 v8.5,则解决从 v8.0 版本之后的所有破坏性更改,包括在 v8.5 下列出的任何更改。
版本 8.2.0 破坏性变更
EF Core 提供程序版本 8.2.0 不会直接引入任何破坏性变更。然而,其底层的 .NET/C# 驱动程序在 v3.0 版本中引入了许多可能破坏性的变更,这可能会影响您的应用程序。有关 .NET/C# 驱动程序 v3.0 的破坏性变更的更多信息,请参阅 .NET/C# 驱动程序文档中的升级到版本 3.0 指南。
版本 8.1.0 破坏性变更
已更新 EF Core 提供程序,使其运行所有更改作为 MongoDB 事务。如果您的应用程序使用的是 v5.0 之前的 MongoDB 服务器,或者不在副本集中运行,则必须在您的应用程序中进行以下更改
如果您的应用程序配置为 v5.0 之前的 MongoDB 服务器版本,则必须升级到 MongoDB 服务器 v5.0 或更高版本。
如果您的应用程序运行在独立服务器上,则必须将您的独立服务器重新配置为单实例副本集。有关如何重新配置独立服务器的更多信息,请参阅 MongoDB 服务器手册中的将独立自管理的 mongod 转换为副本集。
如果您的应用程序在容器环境中运行,如果可用,请切换到单实例副本集容器。
为了避免事务期间的问题,请在应用程序启动期间调用
EnsureCreated()
或EnsureCreatedAsync()
方法,而不是隐式创建集合或数据库。注意
如果您的应用程序在 共享集群 上运行,调用
EnsureCreated()
或EnsureCreatedAsync()
方法将抛出错误。在免费和共享集群上运行的应用程序不应调用这些方法。如果您不想确保事务与乐观并发控制一起,您可以在应用程序设置期间通过将您的
DbContext
子类中的Database.AutoTransactionBehavior = AutoTrasactionBehavior.Never
设置为禁用自动事务。将默认的GUID存储格式从
CSharpLegacy
二进制格式更改为Standard
格式。如果您的数据库中存在不是Standard
格式的现有GUID,我们建议将它们转换为Standard
格式。CamelCaseElementNameConvention
根据实体的属性名而不是其类名来转换所拥有实体的大小写。如果您的应用程序使用CamelCaseElementNameConvention
,您的数据的大小写可能会发生变化。
有关此版本中中断变更的更多信息,请参阅GitHub上提供者的中断变更部分。