0

我有一个ApplicationUser继承自IdentityUser. 我添加了数据类型属性LastLoggedInOffsetDateTime并在每次对 API 的请求时对其进行修改。另外,我使用Auditfrom entityframework plus 来记录用户添加/更新/删除操作,这就是我遇到这个问题的方式。每次更新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 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;

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

4

1 回答 1

1

设计时不能忽略 key 属性。

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

于 2018-06-15T12:44:59.237 回答