Почему первичный ключ моего объекта отображается после изменения объекта?


Вопрос

У меня есть класс ApplicationUser который наследуется от IdentityUser . Я добавил свойство LastLoggedIn которое является OffsetDateTime данных OffsetDateTime и я OffsetDateTime его с каждым запросом API. Кроме того, я использую Audit from entityframework plus, чтобы регистрировать операции добавления / обновления / удаления пользователя, и именно так я столкнулся с этой проблемой. каждый раз, когда я обновляю свойство LastLoggedIn объекта ApplicationUser , я вижу, что свойство 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
Является ли этот КБ законным? Да, узнайте, почему