Anda menggunakan Geografi dialek tetapi menggunakan CustomType Geometri pada pemetaan Anda. Anda harus menggunakan jenis khusus Geografi . Sesuatu seperti:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(MsSql2008GeographyType)); //for SQL2008
}
}
Juga, ada hal lain yang mungkin perlu Anda lakukan. Jika kolom spasial Anda memiliki SRID yang berbeda dari 0 (nol), dan jika Anda ingin melewati pemetaan NH xml, Anda harus mendeklarasikan jenis kustom seperti ini:
public class Wgs84GeographyType : MsSql2008GeographyType
{
protected override void SetDefaultSRID(GeoAPI.Geometries.IGeometry geometry)
{
geometry.SRID = 4326;
}
}
Dan kemudian gunakan pada pemetaan Anda:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(Wgs84GeographyType));
}
}
PERBARUI:
Anda harus mereferensikan NHibernate.Spatial.MsSql2008.dll, dan saya menyarankan Anda untuk menggunakan metode Dialek yang sangat diketik dalam konfigurasi database Anda.
.Dialect<MsSql2008GeographyDialect>()