Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pemetaan Titik Geospasial di Lancar NHibernate

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pemetaan hibernasi datetimeoffset

  2. DATEADD() Contoh di SQL Server

  3. Pisahkan satu nilai kolom menjadi beberapa nilai kolom

  4. UNION ALL vs kondisi ATAU dalam permintaan server sql

  5. 4 Fungsi untuk Memformat Angka menjadi 2 Tempat Desimal di SQL Server