首页 > 解决方案 > 保存后必须将属性标记为只读

问题描述

在 .net Core 5.0 中,我有以下模型类:

 public class Player
 {
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
    public long Id { get; set; }

    public DateTime CreatedOn { get; set; }
    public DateTime ModifiedOn { get; set; }

    public string CreatedBy { get; set; }
    public string ModifiedBy { get; set; }

    public State State { get; set; }
}

我的上下文如下所示:

  modelBuilder.Entity<Player>().Property(p => p.Id)
            .UseIdentityColumn()
            .Metadata.SetAfterSaveBehavior(PropertySaveBehavior.Ignore);

但是,当我尝试添加迁移时,出现以下错误:

属性“Player.Id”在保存后必须标记为只读,因为它是密钥的一部分。首次保存实体后,关键属性始终为只读。

使用设置器和/或将属性标记为只读并不能解决任何问题。这种行为来自哪里以及我如何解决这个问题的任何线索?

标签: asp.net-core-5.0

解决方案


我有一个类似的问题。根据文档“...,SQL Server 中的数字主键自动设置为 IDENTITY 列。”

尝试删除 DataGenerated 注释。


推荐阅读