sql >> Database teknologi >  >> RDS >> Sqlserver

Geospatial punktkortlægning i flydende NHibernate

Du bruger en Geografi dialekt, men bruger en CustomType af Geometri på din kortlægning. Du bør bruge en tilpasset type Geografi . Noget som:

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

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

Der er også noget andet, du muligvis skal gøre. Hvis din rumlige kolonne har et SRID forskelligt fra 0 (nul), og hvis du vil springe NH xml-tilknytninger over, skal du angive en tilpasset type som denne:

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

Og brug det så på din kortlægning:

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

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

OPDATERING:

Du bør henvise til NHibernate.Spatial.MsSql2008.dll, og jeg vil råde dig til at bruge den stærkt indtastede Dialect-metode i din databasekonfiguration.

.Dialect<MsSql2008GeographyDialect>()



  1. Tilføj fremmednøgleforhold mellem to databaser

  2. Laravel veltalende medCount() formodes at være langsommere end bare med()

  3. Django:Exception Value (2013, '2013:Mistet forbindelse til MySQL-server under forespørgsel', ingen)

  4. Top 'n' resultater for hvert søgeord