EF Core 数据库第一个标识列问题



我正在使用EF Core 3.1和数据库优先方法使用Linq-to-Entities添加新实体,但是出现以下错误:

当 IDENTITY_INSERT 设置为 OFF 时,无法插入表 XXX 中标识列的显式值。

我自动生成了表,因此 ID 列类型为 int 并默认设置为 0.并且我无法将其设置为 NULL,因为它不可为 Null。

我不想明确设置值,我只想让它按预期自动增加。

这是我的代码:

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; }
}

键属性表示字段应为主键, 和 数据库生成 属性告诉密钥生成方式。

应告知 EF CoreID是由数据库生成的。一种方法是使用 DatabaseGenerated 属性,例如:

public partial class Person
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string FirstName { get; set; }
public int Age { get; set; }
}

DatabaseGeneratedOption.Identity选项告知 EF Core,数据库在插入记录时会生成新值。如果没有这个,EF Core 将在INSERT命令中包含ID属性的值

最新更新