更新实体后为什么我的实体主键显示被修改?

asp.net-core asp.net-identity entity-framework-core entity-framework-plus

我有一个继承自IdentityUser的类ApplicationUser 。我添加了LastLoggedIn属性,它是OffsetDateTime数据类型,我对API的每个请求都进行了修改。此外,我正在使用来自entityframework plus的Audit来记录用户添加/更新/删除操作,这就是我遇到此问题的方法。每次我更新ApplicationUser实体的LastLoggedIn属性时,我都可以看到Id属性也被修改,显示相同的旧值和新值。为什么我的主键在这里被修改?

我发布了相关代码,

public class ApplicationUser : IdentityUser {
        [Required, StringLength(50)]
        [Display (Name = "First Name")]
        public string FirstName { get; set; }
        public OffsetDateTime? LastLoggedIn { get; set; }
}

调用实体的方法,因为类继承自IdentityUser ,我使用的是UserManager

public class ApplicationUser : IdentityUser {
        [Required, StringLength(50)]
        [Display (Name = "First Name")]
        public string FirstName { get; set; }
        public OffsetDateTime? LastLoggedIn { get; set; }
}

我试过以下但我得到一个例外,

public class ApplicationUser : IdentityUser {
        [Required, StringLength(50)]
        [Display (Name = "First Name")]
        public string FirstName { get; set; }
        public OffsetDateTime? LastLoggedIn { get; set; }
}

属性“Id”无法配置为“ValueGeneratedOnUpdate”或“ValueGeneratedOnAddOrUpdate”,因为在将实体添加到商店后无法更改键值。

一般承认的答案

关键属性不能被设计忽略。

这是因为能够检索更改后面的哪一行。没有密钥,您无法知道哪个ApplicationUser已被修改。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因