Pourquoi ma clé primaire d'entité doit-elle être modifiée après la mise à jour de l'entité?


Question

J'ai une classe ApplicationUser qui hérite d' IdentityUser . J'ai ajouté la propriété LastLoggedIn qui OffsetDateTime type de données OffsetDateTime et je la modifie à chaque requête de l'API. En outre, j'utilise Audit de entityframework plus pour consigner les opérations d'ajout, de mise à jour et de suppression des utilisateurs. C'est ainsi que j'ai découvert ce problème. chaque fois que je mets à jour la propriété LastLoggedIn l'entité ApplicationUser , je peux voir que la propriété Id a également été modifiée, affichant la même valeur, ancienne et nouvelle. Pourquoi ma clé primaire est-elle modifiée ici?

Je poste le code correspondant,

public class ApplicationUser : IdentityUser {
        [Required, StringLength(50)]
        [Display (Name = "First Name")]
        public string FirstName { get; set; }
        public OffsetDateTime? LastLoggedIn { get; set; }
}

Méthode appelant l'entité, puisque la classe hérite d' IdentityUser , j'utilise UserManager

public class ApplicationUser : IdentityUser {
        [Required, StringLength(50)]
        [Display (Name = "First Name")]
        public string FirstName { get; set; }
        public OffsetDateTime? LastLoggedIn { get; set; }
}

J'ai essayé ce qui suit mais j'ai une exception,

public class ApplicationUser : IdentityUser {
        [Required, StringLength(50)]
        [Display (Name = "First Name")]
        public string FirstName { get; set; }
        public OffsetDateTime? LastLoggedIn { get; set; }
}

La propriété 'Id' ne peut pas être configurée comme 'ValueGeneratedOnUpdate' ou 'ValueGeneratedOnAddOrUpdate' car la valeur de la clé ne peut pas être modifiée après l'ajout de l'entité au magasin.

Réponse acceptée

La propriété key ne peut pas être ignorée par conception.

Cela devrait permettre de récupérer quelle ligne est derrière le changement. Sans la clé, vous ne pouvez pas savoir quel ApplicationUser a été modifié.





Sous licence: CC-BY-SA
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi