Eh bien, je ne l'ai pas utilisé NHibernate Spatial, mais je parcouru le code et il semble que GeometryType
hérite de IUserType de sorte que vous devriez pouvoir l'utiliser avec .CustomTypeIs<>
Par exemple:
Map(x => x.Geometry, "the_geom").CustomTypeIs<GeometryType>();
A moins qu'il ne se produit automagiquement, qui ne sera probablement pas vous obtenir vos param
éléments bien. Je ne suis pas sûr d'une façon vraiment agréable de le faire, mais vous pouvez toujours ajouter une modification de XML comme ceci:
Map(x => x.Geometry, "the_geom").AddAlteration(p => p.AddElement("type")
.WithAtt("name", "NHibernate.Spatial.Type.GeometryType,NHibernate.Spatial")
.AddElement("param")
.WithAtt("name", "subtype")
.WithText("MULTIPOLYGON")
.ParentNode
.AddElement("param")
.WithAtt("name", "srid")
.WithText("-1")
);
Notez que pour obtenir la fonctionnalité WithText
, vous devrez ajouter une extension pour XmlElement
comme si (WithAtt et AddElement sont des extensions dans l'espace de noms FluentNHibernate.Mapping):
public static class XmlExtensions
{
public static XmlElement WithText(this XmlElement element, string text)
{
element.InnerText = text;
return element;
}
}
Lorsque vous essayez d'utiliser votre code avec Fluent NHibernate 1.0 Je suis incapable de trouver la fonction AddAlteration dans le type PropertyPart. Votre code fonctionne-t-il avec la version 1.0 de Fluent NHibernate? – Martin
Non, cela ne fonctionne plus. En fait, WithAtt a été retiré peu de temps après avoir fait ce post, si ma mémoire est bonne. Vous pouvez toujours définir le type personnalisé avec Map (x => ...). CustomType(), mais je ne pense pas que vous serez en mesure d'obtenir l'attribut/les éléments param. Je suggère de poster dans le groupe FNH à: http://groups.google.com/group/fluent-nhibernate –