엔터티를 업데이트 한 후 엔터티 기본 키가 수정 된 것으로 표시되는 이유는 무엇입니까?

asp.net-core asp.net-identity entity-framework-core entity-framework-plus

문제

나는 IdentityUser 로부터 상속받은 ApplicationUser 클래스를 가지고있다. LastLoggedIn 속성을 OffsetDateTime 데이터 형식으로 추가하고 API에 대한 모든 요청을 수정합니다. 또한, 엔티티 프레임 워크의 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 때문에 엔터티를 호출하는 메서드, 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 with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.