Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här sidan innehåller ytterligare information om hur du använder rumsliga data med Microsoft SQL Server-databasprovidern. Allmän information om hur du använder rumsliga data i EF Core finns i dokumentationen om spatiala data .
Geografi eller geometri
Som standard mappas rumsliga egenskaper till geography kolumner i SQL Server. Om du vill använda geometrykonfigurerar du kolumntypen i din modell.
Geografiska polygonringar
När du använder geography kolumntypen ställer SQL Server ytterligare krav på den yttre ringen (eller skalet) och de inre ringarna (eller hålen). Den yttre ringen måste vara orienterad motsols och de inre ringarna medsols.
NetTopologySuite (NTS) verifierar detta innan du skickar värden till databasen.
FullGlobe
SQL Server har en icke-standardgeometrityp som representerar hela jordgloben när du använder geography kolumntypen. Det har också ett sätt att representera polygoner över hela jordklotet (utan ett yttre skal). Inget av dessa stöds av NTS.
Varning
FullGlobe och polygoner som baseras på det stöds inte av NTS.
Kurvor
Som nämnts i dokumentationen för spatiala data kan NTS för närvarande inte representera kurvor. Det innebär att du måste transformera värdena CircularString, CompoundCurve och CurePolygon med metoden STCurveToLine innan du använder dem i EF Core.
Varning
CircularString, CompoundCurve och CurePolygon stöds inte av NTS.
Spatial funktionsmappning
Den här tabellen visar vilka NTS-medlemmar som översätts till vilka SQL-funktioner. Observera att översättningarna varierar beroende på om kolumnen är av typen geografi eller geometri.
| .NET | SQL (geografi) | SQL (geometri) | Har lagts till i |
|---|---|---|---|
| EF.Functions.CurveToLine(geometri) | @geometry.STCurveToLine() | @geometry.STCurveToLine() | EF Core 7.0 |
| Geometri. Området | @geometry.STArea() | @geometry.STArea() | |
| Geometri.AsBinary() | @geometry.STAsBinary() | @geometry.STAsBinary() | |
| Geometri.AsText() | @geometry.AsTextZM() | @geometry.AsTextZM() | |
| Geometri. Gränsen | @geometry.STBoundary() | ||
| Geometri. Buffert(avstånd) | @geometry.STBuffer(@distance) | @geometry.STBuffer(@distance) | |
| Geometri. Centroid | @geometry.STCentroid() | ||
| geometri.Contains(g) | @geometry.STContains(@g) | @geometry.STContains(@g) | |
| geometri.ConvexHull() | @geometry.STConvexHull() | @geometry.STConvexHull() | |
| Geometri. Korsningar(g) | @geometry.STCrosses(@g) | ||
| Geometri. Difference(other) | @geometry.STDifference(@other) | @geometry.STDifference(@other) | |
| Geometri. Dimension | @geometry.STDimension() | @geometry.STDimension() | |
| Geometri. Disjoint(g) | @geometry.STDisjoint(@g) | @geometry.STDisjoint(@g) | |
| Geometri. Avstånd(g) | @geometry.STDistance(@g) | @geometry.STDistance(@g) | |
| Geometri. Kuvert | @geometry.STEnvelope() | ||
| Geometri. EqualsTopologically(g) | @geometry.STEquals(@g) | @geometry.STEquals(@g) | |
| Geometri.GeometryType | @geometry.STGeometryType() | @geometry.STGeometryType() | |
| geometry.GetGeometryN(n) | @geometry.STGeometryN(@n + 1) | @geometry.STGeometryN(@n + 1) | |
| geometry.InteriorPoint | @geometry.STPointOnSurface() | ||
| Geometri. Skärningspunkt(annan) | @geometry.STIntersection(@other) | @geometry.STIntersection(@other) | |
| Geometri. Korsningar(g) | @geometry.STIntersects(@g) | @geometry.STIntersects(@g) | |
| geometry.IsEmpty | @geometry.STIsEmpty() | @geometry.STIsEmpty() | |
| Geometri.IsSimple | @geometry.STIsSimple() | ||
| Geometri.IsValid | @geometry.STIsValid() | @geometry.STIsValid() | |
| Geometri.IsWithinDistance(geom, avstånd) | @geometry.STDistance(@geom) <= @distance | @geometry.STDistance(@geom) <= @distance | |
| Geometri. Längd | @geometry.STLength() | @geometry.STLength() | |
| geometry.NumGeometries | @geometry.STNumGeometries() | @geometry.STNumGeometries() | |
| geometry.NumPoints | @geometry.STNumPoints() | @geometry.STNumPoints() | |
| geometry.OgcGeometryType | CASE @geometry.STGeometryType() WHEN N'Point' THEN 1 ... SLUTET | CASE @geometry.STGeometryType() WHEN N'Point' THEN 1 ... SLUTET | |
| Geometri. Överlappningar(g) | @geometry.STOverlaps(@g) | @geometry.STOverlaps(@g) | |
| Geometri.PunktPåYtan | @geometry.STPointOnSurface() | ||
| Geometri. Relate(g, intersectionPattern) | @geometry.STRelate(@g, @intersectionPattern) | ||
| geometry.SRID | @geometry.STSrid | @geometry.STSrid | |
| geometry.SymmetricDifference(other) | @geometry.STSymDifference(@other) | @geometry.STSymDifference(@other) | |
| Geometri.ToBinary() | @geometry.STAsBinary() | @geometry.STAsBinary() | |
| geometry.ToText() | @geometry.AsTextZM() | @geometry.AsTextZM() | |
| Geometri. Touches(g) | @geometry.STTouches(@g) | ||
| Geometri. Union(övrigt) | @geometry.STUnion(@other) | @geometry.STUnion(@other) | |
| Geometri. Inom(g) | @geometry.STWithin(@g) | @geometry.STWithin(@g) | |
| geometryCollection[i] | @geometryCollection.STGeometryN(@i + 1) | @geometryCollection.STGeometryN(@i + 1) | |
| geometryCollection.Count (antal) | @geometryCollection.STNumGeometries() | @geometryCollection.STNumGeometries() | |
| lineString.Count | @lineString.STNumPoints() | @lineString.STNumPoints() | |
| lineString.EndPoint | @lineString.STEndPoint() | @lineString.STEndPoint() | |
| lineString.GetPointN(n) | @lineString.STPointN(@n + 1) | @lineString.STPointN(@n + 1) | |
| lineString.IsClosed | @lineString.STIsClosed() | @lineString.STIsClosed() | |
| lineString.IsRing | @lineString.IsRing() | ||
| lineString.StartPoint | @lineString.STStartPoint() | @lineString.STStartPoint() | |
| multiLineString.IsClosed | @multiLineString.STIsClosed() | @multiLineString.STIsClosed() | |
| Punkt M | @point.M | @point.M | |
| Punkt. X | @point.Long | @point.STX | |
| Punkt Y | @point.Lat | @point.STY | |
| Punkt Z | @point.Z | @point.Z | |
| Polygon. Exteriörring | @polygon.RingN(1) | @polygon.STExteriorRing() | |
| Polygon.GetInteriorRingN(n) | @polygon.RingN(@n + 2) | @polygon.STInteriorRingN(@n + 1) | |
| Polygon. NumInteriorRings | @polygon.NumRings() - 1 | @polygon.STNumInteriorRing() |
Aggregatfunktioner
| .NET | SQL | Har lagts till i |
|---|---|---|
| GeometryCombiner.Combine(group. Select(x => x.Property)) | AggregatSamling(Egenskap) | EF Core 7.0 |
| ConvexHull.Create(group.Select(x => x.Property)) | ConvexHullAggregate(Egenskap) | EF Core 7.0 |
| UnaryUnionOp.Union(group.Select(x => x.Property)) | UnionAggregate(Property) | EF Core 7.0 |
| EnvelopeCombiner.CombineAsGeometry(group.Select(x => x.Property)) | EnvelopeAggregate(Property) | EF Core 7.0 |