繁体   English   中英

.NET 5 - 防止更新自动增量列?

[英].NET 5 - Prevent update on auto-increment column?

我正在尝试在名为 MembershipID 的身份用户表上创建一个自动增量字段,但我遇到了一些问题。

我将身份用户子类化并创建了自己的“ApplicationUser”,因此我可以添加其他字段,这一切都很好。

应用程序用户.cs

public class ApplicationUser : IdentityUser
{
    public int Currency { get; set; }

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int membershipID { get; set; }
    public string Name { get; set; }


}

(注意 - 我已经尝试过使用和不使用 [key] 注释)。

问题该字段在创建 model 时生成并自动递增。 但是,每次我更新 model 时,比如说名称,我都会收到一条错误消息:

SqlException:无法更新标识列“membershipID”。

这是为什么? 我认为通过说它是数据库生成的值它不会这样做吗? 如何防止它更新列? 我不是在尝试编辑自动递增字段,而是在编辑另一列,但不知何故它也尝试更新导致问题的其他字段。

谢谢大家。

我发现以前有人报告过类似的问题。 如果您使用核心 3.1,请尝试在 OnModelCreating 方法中添加类似的内容:

modelBuilder.Entity<ApplicationUser>().Property(u => u.membershipID).Metadata.SetAfterSaveBehavior(PropertySaveBehavior.Ignore);

这是类似的问题 - 无法更新 Entity Framework Core 中的标识列 您可以在那里找到早期版本核心的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM