更新實體後為什麼我的實體主鍵顯示被修改?

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 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”,因為在將實體添加到商店後無法更改鍵值。

一般承認的答案

關鍵屬性不能被設計忽略。

這是因為能夠檢索更改後面的哪一行。沒有密鑰,您無法知道哪個ApplicationUser已被修改。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因