エンティティの更新後にエンティティの主キーが変更されたことを示す理由


質問

私は、 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
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ