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

Why my entity primary key shows to be modified after updating entity?

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

我贴出相关代码,

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

调用实体的方法,由于class继承自IdentityUser,我用的是UserManager

 public async Task UpdateUserLastActivityDateAsync (string userId, string timeZone) {
            var user = await userManager.FindByIdAsync(userId);
            user.LastLoggedIn = timeZone.GetInstantOffsetDateTime();
            await unitOfWork.CompleteAsync(); //  = context.SaveChangesAsync();
        }

我尝试了以下但出现异常,

builder.Entity<ApplicationUser>()
        .Property(e => e.Id)
        .ValueGeneratedOnAddOrUpdate()
        .Metadata.BeforeSaveBehavior = PropertySaveBehavior.Ignore;

The property 'Id' cannot be configured as 'ValueGeneratedOnUpdate' or 'ValueGeneratedOnAddOrUpdate' because the key value cannot be changed after the entity has been added to the store.

键 属性 不能被设计忽略。

那是因为能够检索更改背后的行。没有密钥,您将无法知道修改了哪个ApplicationUser。