Du använder en Geografi dialekt men använder en CustomType av Geometri på din kartläggning. Du bör använda en anpassad typ av Geografi . Något i stil med:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(MsSql2008GeographyType)); //for SQL2008
}
}
Dessutom finns det något annat du kan behöva göra. Om din rumsliga kolumn har ett SRID som skiljer sig från 0 (noll), och om du vill hoppa över NH xml-mappningar, måste du deklarera en anpassad typ så här:
public class Wgs84GeographyType : MsSql2008GeographyType
{
protected override void SetDefaultSRID(GeoAPI.Geometries.IGeometry geometry)
{
geometry.SRID = 4326;
}
}
Och använd den sedan på din kartläggning:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(Wgs84GeographyType));
}
}
UPPDATERING:
Du bör referera till NHibernate.Spatial.MsSql2008.dll, och jag skulle råda dig att använda den starkt skrivna Dialect-metoden i din databaskonfiguration.
.Dialect<MsSql2008GeographyDialect>()