c# - EF Core 数据库优先标识列问题
问题描述
我正在使用 EF Core 3.1 和数据库优先方法,使用 Linq-to-Entities 添加新实体,但出现以下错误:
当 IDENTITY_INSERT 设置为 OFF 时,无法为表 XXX 中的标识列插入显式值。
我自动生成了表,所以 ID 列类型是 int 并且默认设置为 0。我不能将它设置为 NULL,因为它不是 Nullable。
我不想明确设置值,我只想让它自动增加。
这是我的代码:
Person person =new Person()
{
FirstName="Dan",
Age=22
};
db.Persons.Add(person);
db.SaveChanges();
类人(从数据库生成):
public partial class Person
{
public int ID { get; set; }
public string FirstName { get; set; }
public int Age { get; set; }
}
提前感谢您的帮助
解决方案
您应该将下一个属性添加到您的类定义中:
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
....
public partial class Person
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string FirstName { get; set; }
public int Age { get; set; }
}
Key属性表示该字段应该是主键,DatabaseGenerated属性表示键生成方式。
推荐阅读
- email - Exchange POP3 已停止允许下载通过 GRAPH 发送的电子邮件
- amazon-web-services - 我们正在调查 us-east-1 区域中 API 错误率增加的情况
- symfony4 - Symfony 4.4 - 如何在以一种形式链接的 2 个表中插入数据
- reactjs - 在 React 中,如何按值复制状态属性?
- python - 使用 python 和 R 最小化 docker 镜像
- javascript - 如何在 Jquery 数据表中使用选择输入添加列过滤
- heroku - Gitlab CI/CD env var 仅在 master 上可用
- ruby-on-rails - 在 RAIL 5.2 postgres12 上查询 jsonb 数组
- amazon-web-services - 如何在 golang aws api v2 上设置自定义端点以在 IoT 主题上发布
- python - Django中的多进程