Ну, я не использовал NHibernate Spatial, но я просмотрел код, и похоже, что GeometryType
наследуется от IUserType, поэтому вы должны иметь возможность использовать его с .CustomTypeIs<>
Например:
Map(x => x.Geometry, "the_geom").CustomTypeIs<GeometryType>();
Если это не произойдет автоматически, это, вероятно, не даст вам ваши param
элементы. Я не уверен в действительно хорошем способе сделать это, но вы всегда можете добавить изменение XML, например, так:
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")
);
Обратите внимание, что для получения функциональности WithText
вам нужно добавить расширение для XmlElement
примерно так (WithAtt и AddElement являются расширениями в пространстве имен FluentNHibernate.Mapping):
public static class XmlExtensions
{
public static XmlElement WithText(this XmlElement element, string text)
{
element.InnerText = text;
return element;
}
}