Vous utilisez une Géographie dialecte mais en utilisant un CustomType de Geometry sur votre cartographie. Vous devez utiliser un type personnalisé de Géographie . Quelque chose comme :
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(MsSql2008GeographyType)); //for SQL2008
}
}
De plus, il y a autre chose que vous devrez peut-être faire. Si votre colonne spatiale a un SRID différent de 0 (zéro) et si vous souhaitez ignorer les mappages XML NH, vous devrez déclarer un type personnalisé comme celui-ci :
public class Wgs84GeographyType : MsSql2008GeographyType
{
protected override void SetDefaultSRID(GeoAPI.Geometries.IGeometry geometry)
{
geometry.SRID = 4326;
}
}
Et utilisez-le ensuite sur votre mappage :
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(Wgs84GeographyType));
}
}
MISE À JOUR :
Vous devriez faire référence à NHibernate.Spatial.MsSql2008.dll, et je vous conseille d'utiliser la méthode Dialect fortement typée dans la configuration de votre base de données.
.Dialect<MsSql2008GeographyDialect>()