sql >> Databáze >  >> RDS >> Sqlserver

Geoprostorové mapování bodů ve Fluent NHibernate

Používáte Geografii dialekt, ale pomocí CustomType Geometrie na vašem mapování. Měli byste použít vlastní typ Geografie . Něco jako:

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

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

Také je tu ještě něco, co možná budete muset udělat. Pokud má váš prostorový sloupec SRID jiné než 0 (nula) a chcete-li přeskočit mapování NH xml, budete muset deklarovat vlastní typ takto:

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

A pak to použijte ve svém mapování:

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

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

AKTUALIZACE:

Měli byste odkazovat na NHibernate.Spatial.MsSql2008.dll a já bych vám doporučil použít v konfiguraci databáze silně typizovanou metodu Dialect.

.Dialect<MsSql2008GeographyDialect>()



  1. Připojte oddíl LIST k existující tabulce v postgres 11

  2. Jaký datový typ bych měl svázat jako parametr dotazu pro použití se sloupcem NUMBER(15) v Oracle ODBC?

  3. Jak se u PDO mohu ujistit, že příkaz UPDATE byl úspěšný?

  4. Jak získat index jiné kategorie vrácený objednávkou pomocí SQL v oracle?