Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Lập bản đồ điểm không gian địa lý trong Fluent NHibernate

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>()



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tiện ích thay đổi mật khẩu SQL khéo léo để đặt lại mật khẩu SQL

  2. Kỹ thuật hiện thực hóa CTE T-SQL không hoạt động trên SQL Server 2012

  3. Kết quả kỳ lạ từ truy vấn SQL?

  4. Cách sử dụng bảng đã chèn \ đã xóa trong thủ tục được lưu trữ?

  5. Một số cách truy cập Microsoft SQL Server từ Linux là gì?