Sie verwenden eine Geografie Dialekt, aber unter Verwendung eines benutzerdefinierten Typs von Geometry auf deinem Mapping. Sie sollten einen benutzerdefinierten Typ von Geographie verwenden . Etwas wie:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(MsSql2008GeographyType)); //for SQL2008
}
}
Außerdem gibt es noch etwas, das Sie möglicherweise tun müssen. Wenn Ihre Spatial-Spalte eine andere SRID als 0 (Null) hat und Sie NH-XML-Zuordnungen überspringen möchten, müssen Sie einen benutzerdefinierten Typ wie diesen deklarieren:
public class Wgs84GeographyType : MsSql2008GeographyType
{
protected override void SetDefaultSRID(GeoAPI.Geometries.IGeometry geometry)
{
geometry.SRID = 4326;
}
}
Und verwenden Sie es dann in Ihrem Mapping:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(Wgs84GeographyType));
}
}
AKTUALISIERUNG:
Sie sollten auf NHibernate.Spatial.MsSql2008.dll verweisen, und ich würde Ihnen raten, die stark typisierte Dialekt-Methode in Ihrer Datenbankkonfiguration zu verwenden.
.Dialect<MsSql2008GeographyDialect>()