asp.net-core-5.0 - 保存后必须将属性标记为只读
问题描述
在 .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”在保存后必须标记为只读,因为它是密钥的一部分。首次保存实体后,关键属性始终为只读。
使用设置器和/或将属性标记为只读并不能解决任何问题。这种行为来自哪里以及我如何解决这个问题的任何线索?
解决方案
我有一个类似的问题。根据文档“...,SQL Server 中的数字主键自动设置为 IDENTITY 列。”
尝试删除 DataGenerated 注释。
推荐阅读
- tensorflow - 在 Firefox 中使用 web worker 训练 LSTM 不适用于 tensorfow js
- javascript - 如何将 CSV 文件的标题与 mongoDB 中的集合字段匹配
- json - 如何在以下 JSON 值中仅检索状态真或假
- jenkins - Jenkins 中是否有任何插件可以在作业构建后自动将 feature/dev 分支合并到 master?
- netcat - 如何将空字节发送到 netcat 服务器?
- javascript - 如何在悬停时设置 Bootstrap 下拉菜单?
- reactjs - 在 CI 管道上构建项目以及尝试通过 Yarn 添加包时出现错误“错误找不到包“XXX”
- python - 如果它们不在预选列表中,如何遍历图中的边
- c - Libcurl 将更改请求从 PUT 上传到 POST
- r - 如何通过传递字符向量重命名 tibble 中的所有列名?