如何解决错误:实体类型“SomeType”的实例缺少必需的属性“{”Prop1”、“Prop2”}”?

der*_*783 18 c# .net-6.0 ef-core-6.0

问题:如何解决此错误:

Microsoft.EntityFrameworkCore.DbUpdateException:键值“{Id:1}”的实体类型“SomeEntity”的实例缺少必需的属性“{”Prop1”、“Prop2”}”

我有一个使用 EF Core 内存提供程序的测试套件。我最近将解决方案中的所有 EF Core NuGet 包升级到目标版本 6.0.1。

在运行升级后的一些测试时,我遇到了上述错误。

错误中提到的两个属性都是字符串。

我查看了一些 Github 问题和 Stack Overflow 帖子,搜索引擎在 DuckDuckGo 搜索错误消息时会点击这些帖子,但这并没有发现任何有趣的内容。

受影响的类有一个如下的配置方法:

public void Configure(EntityTypeBuilder<SomeType> builder)
{
    builder
        .Property(someType => someType.Prop1)
        .IsRequired();

    builder
        .Property(someType => someType.Prop2)
        .IsRequired();
}
Run Code Online (Sandbox Code Playgroud)

der*_*783 33

显然EFCore 内存提供程序的 v6 强制执行.IsRequired().

我的情况的解决方案是更新测试,以便string错误消息中提到的属性不是null

instanceOfSomeType.Prop1 = "NotNull";
instanceOfSomeType.Prop2 = "NotNull";
Run Code Online (Sandbox Code Playgroud)

或者,您可以禁用此功能:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder
        .LogTo(Console.WriteLine, new[] { InMemoryEventId.ChangesSaved })
        .UseInMemoryDatabase("UserContextWithNullCheckingDisabled", b => b.EnableNullChecks(false));
}
Run Code Online (Sandbox Code Playgroud)