我有一个ApplicationUser
继承自IdentityUser
. 我添加了数据类型属性LastLoggedIn
,OffsetDateTime
并在每次对 API 的请求时对其进行修改。另外,我使用Audit
from 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”,因为在将实体添加到商店后无法更改键值。