Entity Framework Core 中无法更新自增列身份标识。

26

我已经在AspNetUsers表中添加了一个名为NumericId的单独标识,它将与ASP默认的GUID ID一起使用。

我已将该属性添加为ApplicationUser类的附加属性:

public class ApplicationUser : IdentityUser
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public virtual int NumericId { get; set; }
}

然而,当我尝试注册或更新用户的详细信息(这与numericId无关)时,我一直收到错误提示。

SqlException: Cannot update identity column 'NumericId'.

它防止任何更改,并最终不更新用户(但它确实注册一个,且数字ID在该部分上被正确分配。但这是无关紧要的)


你是否正在使用Fluent API?在OnModelCreating方法中有对NumericId的处理吗? - Sanket
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - DethoRhyne
看起来像是个 bug。EF 正试图将一个值插入到由数据库自动生成的列中。你能否提交一个新的问题 - bricelam
从技术上讲,它甚至不应该进行插入。该值已设置并调用的方法应该只是“更新”。我可以尝试将属性设置为空,也许那样它就会忽略它,但我担心这样做会造成一些损害。 - DethoRhyne
缺失:抛出异常的实际代码。 - Gert Arnold
11个回答

0

在使用3.1版本时,关键是确保要更新的对象的标识值与数据库中记录的值相匹配。因此,如果您的对象ID为0,但数据库中对应行的ID为99,请确保在尝试保存之前将对象的ID值设置为99。


尝试过了,结果一样。我仍然得到“无法更新标识列'id'”的错误。 - Pranshu Jawade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接