Você está usando uma Geografia dialeto, mas usando um CustomType de Geometria em seu mapeamento. Você deve usar um tipo personalizado de Geografia . Algo como:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(MsSql2008GeographyType)); //for SQL2008
}
}
Além disso, há outra coisa que você pode precisar fazer. Se sua coluna espacial tiver um SRID diferente de 0 (zero) e se você quiser pular mapeamentos xml NH, precisará declarar um tipo personalizado como este:
public class Wgs84GeographyType : MsSql2008GeographyType
{
protected override void SetDefaultSRID(GeoAPI.Geometries.IGeometry geometry)
{
geometry.SRID = 4326;
}
}
E, em seguida, use-o em seu mapeamento:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(Wgs84GeographyType));
}
}
ATUALIZAÇÃO:
Você deve fazer referência ao NHibernate.Spatial.MsSql2008.dll, e eu aconselho você a usar o método de dialeto fortemente tipado na configuração do banco de dados.
.Dialect<MsSql2008GeographyDialect>()