gpt4 book ai didi

entity-framework-core - EF Core 将 Id 设置为 Int.MinValue 并尝试插入数据库

转载 作者:行者123 更新时间:2023-12-03 17:16:24 25 4
gpt4 key购买 nike

我正在使用 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);

一切正常。

谢谢你。

最佳答案

我认为您需要使用 DatabaseGenerated 配置您的模型属性,或使用 fluent api 配置它

...
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Column("Id")]
public int ID { get; set; }
...

关于entity-framework-core - EF Core 将 Id 设置为 Int.MinValue 并尝试插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45505302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com