EF Core 6-System.InvalidOperationException:无法保存更改,因为在要保存的数据中



为了简单起见,假设我必须进行以下项目:

  • WebAPI和
  • WebAPI的UnitTest

两个项目都使用EF Core 5。WebAPI使用SqlServer,UnitTest使用Sqlite(inMemory(。两个项目都能正常工作。

我从EF Core 5迁移到EF Core 6,现在WebAPI工作正常,但我不能执行任何单元测试。我得到以下错误:

System.InvalidOperationException:无法保存更改,因为在要保存的数据中检测到循环依赖关系:'Microsoft.EntityFrameworkCore.Migrations.Operations.CreateTableOperation->Microsoft.EntityFrameworkCore.Migrations.Operations.CreateTableOperation->Microsoft.EntityFrameworkCore.Migrations.Operations.CreateTableOperation->Microsoft.EntityFrameworkCore.Migrations.Operations.CreateTableOperation"。。位于Microsoft.EntityFrameworkCore.Utilities.Multigraph2.ThrowCycle(List1循环,Func2 formatCycle, Func2 formatException(Microsoft.EntityFrameworkCore.Utilities.Multigraph2.TopologicalSort(Func4tryBreakEdge,Func2 formatCycle, Func2 formatException(Microsoft.EntityFrameworkCore.Utilities.Multigraph2.TopologicalSort(Func4tryBreakEdge(Microsoft.EntityFrameworkCore.Migrations.Interal.MigrationsModelDifferent.Sort(IEnumerable`1操作,DiffContext DiffContext(Microsoft.EntityFrameworkCore.Migrations.Interal.MigrationsModelDifference.GetDifferences(IRelationModel源,IRelationModel目标(Microsoft.EntityFrameworkCore.Storage.RelationalDatabaseCreator.GetCreateTablesCommands(迁移SqlGenerationOptions选项(Microsoft.EntityFrameworkCore.Storage.RelationalDatabaseCreator.CreateTables((在Microsoft.EntityFrameworkCore.Storage.RelationalDatabaseCreator.EnsureCreated((在Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade.EnsureCreated((

循环引用似乎发生在Microsoft.EntityFrameworkCore.Migrations.Operations.CreateTableOperation内部,由于WebAPI项目正常工作,我认为这是Sqlite提供程序的问题。

当EF配置在DbContext的OnModelCreating方法内执行时,似乎会发生此错误。此时,尚未尝试保存/更新实体。EF配置期间单元测试失败。

在这一点上,我对如何进行一无所知。我们有大约100种配置,在例外情况下没有提供更多信息。由于一切都在EF Core 5上运行,我认为这要么是一个突破性的更改(特定于Sqllite(,要么是EF Core 6中的一个错误。

有人碰到这个问题了吗?o有人知道如何找出问题的原因吗?

非常感谢您的帮助。

这在6.0.2版本中已经修复,我可以确认。

相关内容

最新更新