将私有字段映射到在 EF Core 3.1 中不起作用的列

zde*_*dev 5 entity-framework-core

在课堂上,我有一个私有字段:

private string _extraSettings;
Run Code Online (Sandbox Code Playgroud)

我使用以下代码将其映射到名为 ExtraSettings 的列:

modelBuilder.Entity<MyClass>(e =>
{
    e.Property<string>("ExtraSettings").HasField("_extraSettings").UsePropertyAccessMode(PropertyAccessMode.Field);
});
Run Code Online (Sandbox Code Playgroud)

这在 EF Core 2.2 中工作正常,但在 EF Core 3.1 中停止工作,并出现以下错误:

The specified field '_extraSettings' cannot be used for the property 'MyClass.ExtraSettings' because it does not match the property name
Run Code Online (Sandbox Code Playgroud)

MyClass 类没有 ExtraSettings 属性,但由于某种原因,它在 2.2 中有效 - 为什么它在 3.1 中不起作用,我需要做什么才能消除此错误?

Tan*_*jel 8

EF Core 3.0开始:

仅字段属性必须与字段名称完全匹配。

所以你可以这样做:

modelBuilder.Entity<MyClass>(e =>
{
    e.Property<string>("_extraSettings").HasColumnName("ExtraSettings");
});
Run Code Online (Sandbox Code Playgroud)