Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Картографиране на геопространствени точки във Fluent NHibernate

Използвате География диалект, но използвайки CustomType на Geometry на вашето картографиране. Трябва да използвате персонализиран тип География . Нещо като:

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

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

Освен това има още нещо, което може да се наложи да направите. Ако вашата пространствена колона има SRID, различен от 0 (нула), и ако искате да пропуснете NH xml съпоставяния, ще трябва да декларирате персонализиран тип като този:

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

И след това го използвайте във вашето картографиране:

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

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

АКТУАЛИЗАЦИЯ:

Трябва да препращате към NHibernate.Spatial.MsSql2008.dll и бих ви посъветвал да използвате строго типизирания метод Dialect в конфигурацията на вашата база данни.

.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. Има ли еквивалент на SELECT ... INTO OUTFILE в SQL Server Management Studio?

  2. Генерирайте произволно число, което не е там в таблица в sql сървър

  3. Как да съхранявате различни видове документи

  4. Sql LEFT OUTER JOIN с клауза WHERE

  5. TSQL-2008 SUM(X) НАД (ДЯЛ ... ПОРЪЧКА ПО КЛАУЗА)