Je gebruikt een Geografie dialect maar met een CustomType van Geometry op je kaart. Gebruik een aangepast type Geografie . Iets als:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(MsSql2008GeographyType)); //for SQL2008
}
}
Er is ook iets anders dat u mogelijk moet doen. Als uw ruimtelijke kolom een SRID heeft die verschilt van 0 (nul), en als u NH xml-toewijzingen wilt overslaan, moet u een aangepast type als volgt declareren:
public class Wgs84GeographyType : MsSql2008GeographyType
{
protected override void SetDefaultSRID(GeoAPI.Geometries.IGeometry geometry)
{
geometry.SRID = 4326;
}
}
En gebruik het dan op je kaart:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(Wgs84GeographyType));
}
}
UPDATE:
Je zou naar NHibernate.Spatial.MsSql2008.dll moeten verwijzen, en ik zou je aanraden om de sterk getypte Dialect-methode te gebruiken in je databaseconfiguratie.
.Dialect<MsSql2008GeographyDialect>()