EF Core 5 - 支持字段:找不到属性的指定字段

Posted

技术标签:

【中文标题】EF Core 5 - 支持字段:找不到属性的指定字段【英文标题】:EF Core 5 - Backing field: specified field could not be found for property 【发布时间】:2021-12-13 09:21:01 【问题描述】:

我正在尝试创建一个由 JSON 字符串组成的支持字段,然后由模型的属性访问该字符串并转换为 JObject:

public class StaticTable
    
        public int StaticTableId  get; set; 
        private string _staticData  get; set; 

        public JObject StaticData
        
            get => JsonConvert.DeserializeObject<JObject>(string.IsNullOrEmpty(_staticData) ? "" : _staticData);
            set => _staticData = value.ToString();
        

        public static void RunFluent(ModelBuilder modelBuilder)
        
            EntityTypeBuilder<StaticTable> entity = modelBuilder.Entity<StaticTable>();
            entity.Property(s => s.StaticData).HasField("_staticData");
        
    

创建迁移时,我收到以下错误: System.InvalidOperationException: The specified field '_staticData' could not be found for property 'StaticTable.StaticData'.

注意RunFluentDbContext.OnModelCreating中执行

【问题讨论】:

【参考方案1】:

尝试使用私有变量而不是属性

private string _staticData;

【讨论】:

以上是关于EF Core 5 - 支持字段:找不到属性的指定字段的主要内容,如果未能解决你的问题,请参考以下文章

EF Core - 属性“JObject.Next”不是虚拟的

iOS 5/Lion Core Data 有序关系:指定顺序?

使用 EF Core 搭建 MySql 数据库的问题 - 找不到方法:无效 Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping

DB First,ASP Net Core 2.1,EF6:InvalidOperationException:在应用程序配置文件中找不到名为“DataContext”的连接字符串

EF Core 中的 SQL Server 排序规则

在 EF Core 3 中重命名 IdentityRole 表