исключение {'Id'} уже отслеживается в ChangePasswordAsync () - PullRequest
1 голос
/ 28 мая 2019

Я пытаюсь обновить пароль в удостоверении, и я столкнулся со следующей ошибкой:

Не удается отследить экземпляр типа сущности 'TblUsers', поскольку другой экземпляр с тем же ключомзначение для {'Id'} уже отслеживается.При подключении существующих объектов убедитесь, что подключен только один экземпляр объекта с данным значением ключа.Подумайте об использовании DbContextOptionsBuilder.EnableSensitiveDataLogging, чтобы увидеть конфликтующие ключевые значения.

var changePasswordResult = await _userManager.ChangePasswordAsync(user: userData, currentPassword: Old, newPassword: New);

Что мне делать, чтобы устранить это исключение?

1 Ответ

2 голосов
/ 28 мая 2019

Исходя из исключения, userData - это экземпляр класса пользователя Identity, который вы обновили, но ранее вы запрашивали этого же пользователя (что приводит к добавлению в кэш объектов EF и отслеживанию изменений).Теперь вы пытаетесь изменить пароль, используя экземпляр, который вы обновили (который не отслеживается), а не экземпляр, извлеченный из базы данных (который есть).

Длинный и короткий, если высобираясь изменить сущность, вы всегда должны использовать для этого экземпляр, извлеченный из базы данных, а не тот, который вы обновили самостоятельно.Если экземпляр, который был извлечен из базы данных, присутствует в этом коде, используйте его.Если это не так, то снова вытащите его из контекста (он поступит из кеша объектов, поэтому дополнительный запрос не требуется).Затем используйте этот экземпляр для смены пароля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...