首页 > 解决方案 > 将私有字段映射到在 EF Core 3.1 中不起作用的列

问题描述

在课堂上,我有一个私人领域:

private string _extraSettings;

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

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

这在 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

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

标签: entity-framework-core

解决方案


EF Core 3.0开始:

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

因此,您可以执行以下操作:

modelBuilder.Entity<MyClass>(e =>
{
    e.Property<string>("_extraSettings").HasColumnName("ExtraSettings");
});

推荐阅读