Bạn đang sử dụng Địa lý phương ngữ nhưng sử dụng Loại tùy chỉnh của Hình học trên bản đồ của bạn. Bạn nên sử dụng loại Địa lý tùy chỉnh . Một cái gì đó như:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(MsSql2008GeographyType)); //for SQL2008
}
}
Ngoài ra, có một số việc khác mà bạn có thể cần phải làm. Nếu cột không gian của bạn có SRID khác 0 (không) và nếu bạn muốn bỏ qua ánh xạ NH xml, bạn sẽ cần khai báo loại tùy chỉnh như sau:
public class Wgs84GeographyType : MsSql2008GeographyType
{
protected override void SetDefaultSRID(GeoAPI.Geometries.IGeometry geometry)
{
geometry.SRID = 4326;
}
}
Và sau đó sử dụng nó trên bản đồ của bạn:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(Wgs84GeographyType));
}
}
CẬP NHẬT:
Bạn nên tham khảo NHibernate.Spatial.MsSql2008.dll và tôi khuyên bạn nên sử dụng phương thức Dialect được gõ mạnh trong cấu hình cơ sở dữ liệu của bạn.
.Dialect<MsSql2008GeographyDialect>()