J'ai du mal à comprendre comment je devrais remplacer les équivalents et obtenir un code haché pour une classe que j'écris en utilisant NHibernate.Comment remplacer les équivalents pour une classe spécifique de NHibernate
Le scénario de gestion de base est que les utilisateurs ne peuvent pas réutiliser le même mot de passe dans une limite de 90 jours.
Donc j'ai un "utilisateur" qui a beaucoup de "mots de passe historiques" ... la classe d'utilisateur était facile car j'utilise juste le login dans les égaux. Voici ma classe HistoricalPassword. Je dirais d'un point de vue commercial que la combinaison de l'utilisateur et du ChangeDate me donnerait l'égalité. Cependant ... il ne semble pas correct de référencer l'utilisateur dans la méthode equals (puisque pour une chose qui provoquerait une charge paresseuse) ... et aussi de ce que j'ai lu en utilisant le PK de HistoricalPasswordId est un non-non ainsi que.
Quelqu'un peut-il fournir des conseils sur la façon dont ils remplaceraient des égaux pour cela?
EDIT ::: Je pense que je pourrais avoir été un peu trompeur sur la façon dont j'ai posé la question. Je ne suis pas confus sur la façon d'appliquer la règle métier de s'assurer que les mots de passe ne sont pas réutilisés ... ni sur la façon dont je sais si deux mots de passe sont égaux ou sont sécurisés. Ce que je veux vraiment savoir, c'est qu'au niveau de l'entité, spécifiquement lié à NHibernate, comment devrais-je remplacer Equals pour cet objet afin que NHibenate ne finisse pas avec des dupes dans la session et/ou le cache. Selon le document NHibernate (https://www.hibernate.org/hib_docs/nhibernate/html/persistent-classes.html), je devrais remplacer les égaux en utilisant l'égalité des clés commerciales. Dans ce cas, je ne suis pas sûr si l'utilisation de l'objet référencé de l'utilisateur dans la comparaison est une bonne idée.
Merci pour votre réponse rapide ... et mon inquiétude sur ma sécurité :) Par souci de simplification, supposons que mes mots de passe sont sécurisés. Mais revenons au problème ... J'ai l'impression qu'il y a cette partie de ping-pong qui va et vient sur les gens qui disent que vous devez ignorer equals et gethashcode sinon vous êtes condamné à utiliser NHibernate car vous finirez avec des dups dans votre session ... et puis il y a autant de personnes qui disent ne pas déranger ou simplement utiliser le PK dans le contrôle de l'égalité ... !!! yikes !!! – Todd
L'égalité de l'entité est identique à l'égalité de la clé primaire, donc remplacez Equals en conséquence. Mais ce dont vous parlez, ce n'est pas l'égalité réelle, mais une autre forme d'équivalence. –