作者:夏雨之唯美 | 来源:互联网 | 2023-01-26 17:11
我正在使用EF Core,并且在保存新实体时遇到问题。
这是我的模特班
[Column("Id")]
public int ID { get; set; }
[Required]
[Column("Pratica", TypeName = "varchar(10)")]
public string PRATICA { get; set; }
[Column("Anno")]
public int ANNO { get; set; }
[Required]
[Column("Variante", TypeName = "varchar(2)")]
public string VARIANTE { get; set; }
在这里,我创建并初始化一个新的PRAT对象:
var prat = new PRAT();
prat.PRATICA = "Prova";
prat.ANNO = 2000;
prat.VARIANTE = "0";
context.PRAT.Add(prat);
context.SaveChangesAsync();
就在context.PRAT.Add(prat)行之后,如果我检查prat.ID成员,我会得到类似-2147482647的信息
在context.SaveChangesAsync之后,出现错误“当IDENTITY_INSERT设置为OFF时,无法在表'Prat'中为标识列插入显式值”
这是生成的SQL语句:
INSERT INTO [Prat] ([Id], [Anno], [Pratica], [Variante]) VALUES (@p0, @p1, @p2, @p3);
如您所见,Id字段已添加到字段列表中,但此字段是Identity!
如果在context.SaveChangesAsync()之前设置
prat.ID = 0
生成的SQL语句是
INSERT INTO [Prat] ([Anno], [Pratica], [Variante]) VALUES (@p0, @p1, @p2);
而且一切正常。
谢谢。