Вы используете диалект Geography , но используете 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>()