J'ai un problème avec NHibernate et le type de données postgresql POINT (bien que je pense que c'est un problème courant pour tous ceux essayer de mapper un TYPE SQL qui n'est pas couvert par NHibernate SqlTypes).Implémentation d'un nouveau type NHibernate pour le type de données POINT postgresql (ou toute COLONNE d'un type nhibernate analogue non primitif)
Ma classe Data.Point a deux flottants publics: xcoordinate et ycoordinate.
Ma première tentative a essayé de mettre en œuvre l'interface IUserType, mais je me suis vite découvert que le problème vient plus tôt, pendant la phase de cartographie:
MappingException était non gérée par le code utilisateur:
Impossible de déterminer le type pour: Data.PointUserType, Data.Point, pour les colonnes: NHibernate.Mapping.Column (coordonnées)
Je suis très nouveau pour NHibernate, mais il me semble que je ne peux créer un nouveau type si la colonne dans la base de données est d'un type connu (un de float, int, var char et tous les types "classiques", mais pas les types géométriques dont j'ai besoin).
J'avais réussi à mapper mon POINT à deux propriétés différentes, en mappant les coordonnées [0] et les coordonnées [1]. Mais ceci n'est utile que pour les requêtes SELECT et UPDATE, car pour INSERT, postgresql se plaindra que "coordonnées" n'est pas Nullable.
De plus, je ne trouve pas une version actuelle des extensions NHibernate Spatial, et je préfère de loin avoir le contrôle de mon type POINT, car je n'utiliserai que très rarement ce type, et donc je préférerais ne pas charger l'ensemble des assemblées NHibernate Spatial (à supposer qu'elles soient développées activement, sinon je m'en tiendrai à ne pas les suivre).
Mes dernières pensées sont que je dois jouer avec la génération SQL NHibernate (depuis une partie de l'insertion SQL serait « (a, b) » :: point de, quelque chose de très spécifique), et peut-être c'est un peu trop gênant (peut-être pas, je serais prêt à y jeter un coup d'œil). Je suis assez nouveau à NHibernate, mais je suis désespérée. Quelqu'un peut-il me pointer quelque part?
Je sais qu'il est un peu en retard, mais étaient vous êtes capable de le faire? J'essaie de cartographier le type de point postgresql à Nhibernate, avec ou sans NH.Spatial, et je continue de trouver vos questions. –
En effet, j'ai, mais il y a des choses à noter. Contactez-moi à mzabani at gmail dot com. –