2009-04-09 11 views
1

Nous travaillons avec une base de données héritée qui enregistre des valeurs entières dans la colonne varchar. Nous devons mapper cette colonne à la propriété Int32 et cela fonctionne bien si les données dans la colonne de base de données sont numériques ou NULL.(Fluent) NHibernate - Mapping Varchar à Int32

Mais nous avons des problèmes si la colonne contient une chaîne vide au lieu de null - nhibernate renvoie une erreur qu'elle ne peut pas convertir en entier.

Est-il possible de configurer le mappage de classe pour convertir automatiquement toutes les valeurs où l'exception augmente à une valeur par défaut (zéro dans ce cas)?

Répondre

2

Il est probablement possible de convertir les valeurs à l'aide d'un intercepteur. Vous pouvez obtenir des conseils en cherchant "substitution de valeur nulle".

Mais avez-vous vraiment ce besoin? Vous pouvez mapper un membre privé ou en lecture seule pour la colonne varchar et utiliser une propriété différente pour le contrôler.

private string _varcharField; 

public string VarcharField 
{ 
    get { return _varcharField; } 
} 

public int IntProperty 
{ 
    get { [parse and return _varcharField]; } 
    set { _varcharField = value.ToString(); } 
} 

Dans cet exemple, _varcharField serait mappé dans NHibernate en utilisant une stratégie d'accès.

+0

Merci, c'est quelque chose que je veux faire si cela ne peut pas être fait par le mappage. – nihique