Používáte Geografii dialekt, ale pomocí CustomType Geometrie na vašem mapování. Měli byste použít vlastní typ Geografie . Něco jako:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(MsSql2008GeographyType)); //for SQL2008
}
}
Také je tu ještě něco, co možná budete muset udělat. Pokud má váš prostorový sloupec SRID jiné než 0 (nula) a chcete-li přeskočit mapování NH xml, budete muset deklarovat vlastní typ takto:
public class Wgs84GeographyType : MsSql2008GeographyType
{
protected override void SetDefaultSRID(GeoAPI.Geometries.IGeometry geometry)
{
geometry.SRID = 4326;
}
}
A pak to použijte ve svém mapování:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(Wgs84GeographyType));
}
}
AKTUALIZACE:
Měli byste odkazovat na NHibernate.Spatial.MsSql2008.dll a já bych vám doporučil použít v konfiguraci databáze silně typizovanou metodu Dialect.
.Dialect<MsSql2008GeographyDialect>()