sql >> Databasteknik >  >> RDS >> Sqlserver

Geospatial punktkartläggning i flytande NHibernate

Du använder en Geografi dialekt men använder en CustomType av Geometri på din kartläggning. Du bör använda en anpassad typ av Geografi . Något i stil med:

public class PlaceMap : ClassMap<Place>
{
    public PlaceMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);

        Map(x => x.Location).CustomType(typeof(MsSql2008GeographyType)); //for SQL2008
    }
}

Dessutom finns det något annat du kan behöva göra. Om din rumsliga kolumn har ett SRID som skiljer sig från 0 (noll), och om du vill hoppa över NH xml-mappningar, måste du deklarera en anpassad typ så här:

public class Wgs84GeographyType : MsSql2008GeographyType
{
    protected override void SetDefaultSRID(GeoAPI.Geometries.IGeometry geometry)
    {
        geometry.SRID = 4326;
    }
}

Och använd den sedan på din kartläggning:

public class PlaceMap : ClassMap<Place>
{
    public PlaceMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);

        Map(x => x.Location).CustomType(typeof(Wgs84GeographyType));
    }
}

UPPDATERING:

Du bör referera till NHibernate.Spatial.MsSql2008.dll, och jag skulle råda dig att använda den starkt skrivna Dialect-metoden i din databaskonfiguration.

.Dialect<MsSql2008GeographyDialect>()



  1. Ansluter till Microsoft Access i IRI Workbench

  2. Konvertera IP-adress (IPv4) utan ett heltal i R

  3. Visar bild från PostgreSQL-databas, bytea

  4. Hur man sammanför två underfrågor i SQLAlchemy och postgresql