sql >> Database >  >> RDS >> Sqlserver

Geospatiale punttoewijzing in Vloeiend NHibernate

Je gebruikt een Geografie dialect maar met een CustomType van Geometry op je kaart. Gebruik een aangepast type Geografie . Iets als:

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

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

Er is ook iets anders dat u mogelijk moet doen. Als uw ruimtelijke kolom een ​​SRID heeft die verschilt van 0 (nul), en als u NH xml-toewijzingen wilt overslaan, moet u een aangepast type als volgt declareren:

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

En gebruik het dan op je kaart:

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

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

UPDATE:

Je zou naar NHibernate.Spatial.MsSql2008.dll moeten verwijzen, en ik zou je aanraden om de sterk getypte Dialect-methode te gebruiken in je databaseconfiguratie.

.Dialect<MsSql2008GeographyDialect>()



  1. %ROWTYPE variabele uit tabelnaam

  2. Wat is de beste manier om dubbele waarden uit de MySQL-tabel te verwijderen?

  3. Geparametriseerde IN-component die meerdere kolommen gebruikt

  4. Waarom ondersteunt de MyISAM-engine van MySQL geen buitenlandse sleutels?