2011-12-18 3 views
0

J'utilise NHibernate 2.2 depuis plus d'un an et demi et cela fonctionne très bien jusqu'à maintenant.nhibernate XmlSqlType

J'ai maintenant besoin de mapper au type de données XML de SQL Server 2005. J'ai trouvé quelques implémentations IUserType personnalisées sur Internet et elles semblent avoir du sens. Mais j'ai aussi remarqué que le nouveau NHibernate 3.2 semble avoir un XmlSqlType intégré qui ressemble à ce dont j'ai besoin.

Selon le NHibernate 3.2.0 CR 1/3.1.0 - Changelog, la nouvelle fonctionnalité "NH-866" fait son apparition sur NHibernate 3.0.0 Alpha 3. Mais je ne ai rien trouvé au sujet de cette fonction ou NH reference page partout ailleurs sur Internet. Je n'ai trouvé aucune référence ici non plus. Apparemment, si NH 3.2 ne supporte pas le XmlSqlType, je vais devoir utiliser l'approche de type personnalisé, mais avant de poursuivre, je voudrais m'assurer de ne pas réinventer la roue. Toutes suggestions, recommandations, exemples ou références d'URL sur ce sujet seront grandement appréciés.

Répondre

0

Je suis assez sûr que NH supporte le XmlSqlType, car il peut être found in the source

Il doit se trouver dans l'espace de noms NHibernate.SqlTypes.XmlSqlType.

+0

Merci Ron. J'ai vu ce code source aussi. Cela confirme ma compréhension et c'est une excellente nouvelle! Dans ce cas, la façon de l'utiliser est simplement de mapper une propriété à une colonne db de type XML avec un XmlSqlType dans le fichier de mapping tel que ? Merci. – John

+0

Oui, je suppose que oui. Ou, au cas où vous ne le sauriez pas, depuis nhibernate 3.2, vous pouvez également créer des mappages en code. (Puisque vous avez spécifiquement mentionné le faire en XML) Voir [ceci pour les exemples de code] (http://fabiomaulo.blogspot.com/2011/04/nhibernate-32-mapping-by-code.html). –

+0

J'ai lu à propos de la capacité de mappage in-code, mais je n'ai pas encore eu l'occasion de le tester mais je vais d'abord essayer le mappage conventionnel en utilisant XML pour voir comment fonctionne XmlSqlType. Je mettrai à jour le post plus tard avec mes résultats. Merci encore. – John

0

J'ai essayé de mapper une colonne XML comme celui-ci

<property name="PropertyName" column="ColumnName" type="XmlDoc" not-null="false"/> 

et sa propriété de classe d'entité correspondante comme

public virtual XmlDocument Report { get; set; }. 

Il semblait fonctionner. Est-ce que c'est la bonne façon de le faire? Est-ce que quelqu'un peut dire si c'est une bonne façon de le faire?