gpt4 book ai didi

c# - Entity Framework Core 尝试更新模型中标记为身份的列

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:57 25 4
gpt4 key购买 nike

我有一个数据库表,其中一列是 IDENTITY 列(不是手动设置的主键)。我的 EF Core 模型如下所示:

public class Model
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }

...Other fields...

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int AnotherId { get; set; }
}

尽管有注释,当我对表进行更新时,我发现生成的 SQL 尝试更新 IDENTITY 列:

UPDATE [Model] SET ... [AnotherId] = @p10 ...
WHERE [Id] = @p29;
SELECT @@ROWCOUNT;

这显然失败了,导致抛出异常。我正在使用 Entity Core 2.0,目前无法升级到 2.1。知道为什么数据注释被忽略了吗?

最佳答案

我在 EF Core 3.1 中的解决方案是这样的:

    partial void OnModelCreatingPartial(ModelBuilder modelBuilder)
{
modelBuilder.Entity<YourTableName>().Property(c => c.YourPropertyName).UseIdentityColumn().ValueGeneratedOnAddOrUpdate();
}

在没有 ValueGeneratedOnAddOrUpdate() 的情况下,我在更新现有记录时看到了与 OP 相同的错误。因此,看起来 UseIdentityColumn() 等同于调用 ValueGeneratedOnAdd()。

关于c# - Entity Framework Core 尝试更新模型中标记为身份的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51476249/

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