J'essaie de créer un UserType qui hache une valeur. Le problème que j'ai est d'avoir accès au sel qui se trouve dans la même table.NHibernate: Accéder à la valeur d'une autre colonne dans un UserType
void IUserType.NullSafeSet(IDbCommand cmd, object value, int index)
{
object paramVal = DBNull.Value;
if (!String.IsNullOrEmpty((string)value))
{
paramVal = ComputeHash((string)value, saltBytes?);
}
IDataParameter parameter = (IDataParameter)cmd.Parameters[index];
parameter.Value = paramVal;
}
Je suis incertain sur la façon de fiable accès une colonne de base de données de la même table pour obtenir le sel qui a été fixé.
que je pouvais faire quelque chose comme ceci pour accéder à la colonne de sel:
byte[] saltValueBeingInsertedIntoDB = (IDataParameter)cmd.Parameters[1].Value;
Il semble si fragile pour y accéder via l'index, que l'ordre pourrait changer. J'adorerais que je puisse y accéder à partir du nom de la colonne, mais le nom de la colonne (SoureColumn) n'est jamais renseigné.
Comment puis-je accéder de manière fiable au sel qui existe dans cmd.Parameters? Ou y a-t-il un meilleur moyen? (J'ai le plein contrôle pour changer tout ce qui est nécessaire, sauf la version NHibernate).
Remarque: Si je place le sel ailleurs, il peut être judicieux de hacher la valeur à cet endroit plutôt que d'utiliser un UserType.
NHiberate 2.1.2.4000 Courant NHibernate 1.1.0.685
J'aurais tendance à aller avec votre 'note' à la fin. De cette façon, je peux tester la partie de hachage indépendamment de NHibernate. – Suhas