アカウントパスワードがデータベースにハッシュとして保存されるNHibernateを使用して、3層アプリケーションを作成しています。Nhibernateが特定の列を更新しないようにしますか?
プレゼンテーションレイヤーは、パスワードをリポジトリに渡す前にパスワードがハッシュされる、サービス内のアカウントエンティティを必要とするsaveメソッドを呼び出します。
初めてアカウントが保存され、パスワードが正しくハッシュされ、すべて正常です。
パスワードを変更せずにアカウントを更新すると、アカウントエンティティのパスワードプロパティの値は既にハッシュされています。サービスの保存メソッドを通過するとハッシュされます。
私のエンティティは次のようになります。
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はを伝えることができますか?他にどのような可能性がありますか?