Използвате География диалект, но използвайки CustomType на Geometry на вашето картографиране. Трябва да използвате персонализиран тип География . Нещо като:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(MsSql2008GeographyType)); //for SQL2008
}
}
Освен това има още нещо, което може да се наложи да направите. Ако вашата пространствена колона има SRID, различен от 0 (нула), и ако искате да пропуснете NH xml съпоставяния, ще трябва да декларирате персонализиран тип като този:
public class Wgs84GeographyType : MsSql2008GeographyType
{
protected override void SetDefaultSRID(GeoAPI.Geometries.IGeometry geometry)
{
geometry.SRID = 4326;
}
}
И след това го използвайте във вашето картографиране:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(Wgs84GeographyType));
}
}
АКТУАЛИЗАЦИЯ:
Трябва да препращате към NHibernate.Spatial.MsSql2008.dll и бих ви посъветвал да използвате строго типизирания метод Dialect в конфигурацията на вашата база данни.
.Dialect<MsSql2008GeographyDialect>()