2009-09-11 4 views
1

Mon modèle de domaine utilise System.Net.Uri pour représenter les URL et System.Drawing.Color pour représenter les couleurs. Dans le db, les uris sont simplement nvarchars et les couleurs sont des valeurs rgb web (hex). En utilisant NHibernate, existe-t-il un moyen de mapper entre ces valeurs en utilisant un mappeur personnalisé?Convertisseurs personnalisés pour les types de domaines utilisant NHibernate

Je n'ai pas besoin pour interroger contre ces éléments, mais ce serait bien si je pouvais.

Toute aide est grandement appréciée.

Répondre

4

Ce dont vous avez besoin, ce sont les types d'utilisateurs. Mettre en œuvre IUserType ou IComplexUserType (il existe d'autres interfaces pour répondre à d'autres besoins).

Il y a quelques exemples:

Utilisation du type d'utilisateur, vous pouvez mapper une classe à un certain nombre de colonnes de tout type. Implémenter le type d'utilisateur signifie implémenter le mappage entre eux.

La cartographie pourrait ressembler à ceci:

<property "MyColor" type="ColorUserType"> 
    <column name="R"/> 
    <column name="G"/> 
    <column name="B"/> 
</property> 
+0

Wunderbar! Travaillé parfaitement! NHibernate s'améliore de jour en jour ... C'était tellement difficile de faire des trucs comme ça dans linq to sql – CVertex

+0

:-) Je pense que c'est une fonctionnalité assez ancienne. Le problème est que NH a de nombreuses fonctionnalités, mais parfois il n'est pas facile de les trouver. –

0

Vous pouvez utiliser Transformers. Je les ai utilisés pour une requête native qui transforme le résultat en un objet personnalisé. Dans votre cas, vous pouvez ajuster les propriétés get à transformer en votre représentation Uri et couleur.