Я пишу 3-уровневое приложение, использующее NHibernate, где пароли учетных записей сохраняются в виде хэша в базе данных.
Уровень представления вызывает метод сохранения, который требует сущность учетной записи, в моей службе, гдепароль хешируется перед передачей в хранилище.
Итак, при первом сохранении учетной записи пароль корректно хешируется и все в порядке.
Но как только мне нужно обновить учетную запись, не меняя пароль, значение паролясвойство в объекте учетной записи уже хэшируется, когда оно проходит через метод сохранения моего сервиса, оно снова хэшируется.
Моя сущность выглядит следующим образом:
public class AccountEntity : EntityBase {
public virtual string Username { get; set; }
public virtual string Password { get; set; }
public virtual string Email { get; set; }
public virtual bool Enabled { get; set; }
}
И мойСлужба с методом сохранения:
public class AccountService {
private readonly IRepository<AccountEntity> _accountRepository;
private readonly IHashingProvider _hashingProvider;
public AccountService(IRepository<AccountEntity> accountRepository, IHashingProvider hashingProvider) {
_accountRepository = accountRepository;
_hashingProvider = hashingProvider;
}
public void Save(AccountEntity accountEntity) {
accountEntity.Password = _hashingProvider.Hash(accountEntity.Password);
_accountRepository.Save(accountEntity);
}
}
Как я могу сказать NHibernate НЕ обновить пароль?Какие еще возможности у меня есть?