Nun, ich habe NHibernate Spatial nicht verwendet, aber ich durchsuchte den Code durch und es sieht aus wie GeometryType
erbt von IUserType so sollten Sie in der Lage sein, es zu benutzen mit .CustomTypeIs<>
Zum Beispiel:
Map(x => x.Geometry, "the_geom").CustomTypeIs<GeometryType>();
es sei denn, es geschieht automatisch, dass wahrscheinlich nicht wenn Sie Ihre param
Elemente erhalten. Ich bin nicht sicher, ob ein wirklich schöner Weg, dies zu tun, aber Sie können eine XML-Änderung wie so immer hinzufügen:
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")
);
Beachten Sie, dass die WithText
Funktionalität zu erhalten, werden Sie eine Erweiterung hinzufügen, um für XmlElement
wie so (WithAtt und AddElement sind Erweiterungen im FluentNHibernate.Mapping Namespace):
public static class XmlExtensions
{
public static XmlElement WithText(this XmlElement element, string text)
{
element.InnerText = text;
return element;
}
}
Beim Versuch, den Code zu verwenden, um mit Fluent NHibernate 1.0 ich bin nicht in der Lage, die AddAlteration Funktion innerhalb des PropertyPart Typs zu finden. Arbeitet Ihr Code mit der Version 1.0 von Fluent NHibernate? – Martin
Nein, das funktioniert nicht mehr. In der Tat wurde WithAtt nicht lange nachdem ich diesen Beitrag gemacht habe, wenn der Speicher dient, entfernt. Sie können den benutzerdefinierten Typ immer noch mit Map (x => ...) festlegen.CustomType(), aber ich glaube nicht, dass Sie das param-Attribut/die Parameter dort finden können. Ich würde vorschlagen, in der FNH-Gruppe unter http://groups.google.com/group/fluent-nhibernate zu posten –