Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Diese Seite enthält zusätzliche Informationen zur Verwendung von räumlichen Daten mit dem Microsoft SQL Server-Datenbankanbieter. Allgemeine Informationen zur Verwendung von räumlichen Daten in EF Core finden Sie in der hauptdokumentation zu räumlichen Daten .
Geografie oder Geometrie
Standardmäßig werden räumliche Eigenschaften den Spalten in SQL Server zugeordnet geography. Um geometry zu verwenden, konfigurieren Sie den Spaltentyp in Ihrem Modell.
Geografische Polygonringe
Bei Verwendung des geography Spaltentyps erzwingt SQL Server zusätzliche Anforderungen an den Außenring (oder die Schale) und Innenringe (oder Löcher). Der Außenring muss gegen den Uhrzeigersinn ausgerichtet sein und die Innenringe im Uhrzeigersinn.
NetTopologySuite (NTS) überprüft dies, bevor Werte an die Datenbank gesendet werden.
FullGlobe
SQL Server verfügt über einen nicht standardmäßigen Geometrietyp, der den vollständigen Globus darstellt, wenn der geography Spaltentyp verwendet wird. Es hat auch eine Möglichkeit, Polygone basierend auf dem vollständigen Globus (ohne Außenring) darzustellen. Keines von beiden wird von NTS unterstützt.
Warnung
FullGlobe und Polygone werden von NTS nicht unterstützt.
Kurven
Wie in der Hauptdokumentation zu räumlichen Daten erwähnt, kann NTS derzeit keine Kurven darstellen. Dies bedeutet, dass Sie die Werte "CircularString", "CompoundCurve" und "CurePolygon" mithilfe der STCurveToLine-Methode transformieren müssen, bevor Sie sie in EF Core verwenden.
Warnung
CircularString, CompoundCurve und CurePolygon werden von NTS nicht unterstützt.
Zuordnungen räumlicher Funktionen
Diese Tabelle zeigt, welche NTS-Member in welche SQL-Funktionen übersetzt werden. Beachten Sie, dass die Übersetzungen abhängig davon variieren, ob die Spalte vom Typ "Geografie" oder "Geometrie" ist.
| .NET | SQL (Geografie) | SQL (Geometrie) | Hinzugefügt in |
|---|---|---|---|
| EF.Functions.CurveToLine(geometry) | @geometry.STCurveToLine() | @geometry.STCurveToLine() | EF Core 7.0 |
| GeometrieFläche | @geometry.STArea() | @geometry.STArea() | |
| Geometrie.AsBinary() | @geometry.STAsBinary() | @geometry.STAsBinary() | |
| geometry.AsText() | @geometry.AsTextZM() | @geometry.AsTextZM() | |
| Geometrie. Grenze | @geometry.STBoundary() | ||
| Geometrie. Puffer(Abstand) | @geometry.STBuffer(@distance) | @geometry.STBuffer(@distance) | |
| Geometrie. Schwerpunkt | @geometry.STCentroid() | ||
| Geometrie. Contains(g) | @geometry.STContains(@g) | @geometry.STContains(@g) | |
| Geometrie. ConvexHull() | @geometry.STConvexHull() | @geometry.STConvexHull() | |
| Geometrie. Kreuze(g) | @geometry.STCrosses(@g) | ||
| Geometrie. Unterschied(sonstige) | @geometry.STDifference(@other) | @geometry.STDifference(@other) | |
| Geometrie. Dimension | @geometry.STDimension() | @geometry.STDimension() | |
| Geometrie. Disjoint(g) | @geometry.STDisjoint(@g) | @geometry.STDisjoint(@g) | |
| Geometrie. Abstand(g) | @geometry.STDistance(@g) | @geometry.STDistance(@g) | |
| Geometrie.Hüllkurve | @geometry.STEnvelope() | ||
| Geometrie. EqualsTopologically(g) | @geometry.STEquals(@g) | @geometry.STEquals(@g) | |
| Geometrie. GeometryType | @geometry.STGeometryType() | @geometry.STGeometryType() | |
| Geometrie.GetGeometryN(n) | @geometry.STGeometryN(@n + 1) | @geometry.STGeometryN(@n + 1) | |
| Geometrie. InteriorPoint | @geometry.STPointOnSurface() | ||
| Geometrie. Schnittmenge(andere) | @geometry.STIntersection(@other) | @geometry.STIntersection(@other) | |
| Geometrie. Intersects(g) | @geometry.STIntersects(@g) | @geometry.STIntersects(@g) | |
| Geometrie. Isempty | @geometry.STIsEmpty() | @geometry.STIsEmpty() | |
| Geometrie.IsSimple | @geometry.STIsSimple() | ||
| Geometrie.IstGültig | @geometry.STIsValid() | @geometry.STIsValid() | |
| Geometrie. IsWithinDistance(geom, Distance) | @geometry.STDistance(@geom) <= @distance | @geometry.STDistance(@geom) <= @distance | |
| Geometrie.Länge | @geometry.STLength() | @geometry.STLength() | |
| Geometrie.NumGeometrien | @geometry.STNumGeometries() | @geometry.STNumGeometries() | |
| Geometrie. NumPoints | @geometry.STNumPoints() | @geometry.STNumPoints() | |
| Geometrie.OgcGeometryType | CASE @geometry.STGeometryType() WHEN N'Point' THEN 1 ... ENDE | CASE @geometry.STGeometryType() WHEN N'Point' THEN 1 ... ENDE | |
| Geometrie. Überlappungen(g) | @geometry.STOverlaps(@g) | @geometry.STOverlaps(@g) | |
| Geometrie. PointOnSurface | @geometry.STPointOnSurface() | ||
| Geometrie.Relate(g, intersectionPattern) | @geometry.STRelate(@g, @intersectionPattern) | ||
| Geometrie.SRID | @geometry.STSrid | @geometry.STSrid | |
| Geometrie. SymmetricDifference(andere) | @geometry.STSymDifference(@other) | @geometry.STSymDifference(@other) | |
| Geometrie. ToBinary() | @geometry.STAsBinary() | @geometry.STAsBinary() | |
| geometry.ToText() | @geometry.AsTextZM() | @geometry.AsTextZM() | |
| Geometrie. Touches(g) | @geometry.STTouches(@g) | ||
| Geometrie. Union(sonstige) | @geometry.STUnion(@other) | @geometry.STUnion(@other) | |
| Geometrie. Innerhalb(g) | @geometry.STWithin(@g) | @geometry.STWithin(@g) | |
| geometryCollection[i] | @geometryCollection.STGeometryN(@i + 1) | @geometryCollection.STGeometryN(@i + 1) | |
| geometryCollection.Count | @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. Außenring | @polygon.RingN(1) | @polygon.STExteriorRing() | |
| Polygon.GetInteriorRingN(n) | @polygon.RingN(@n + 2) | @polygon.STInteriorRingN(@n + 1) | |
| Polygon. NumInteriorRings | @polygon.NumRings() - 1 | @polygon.STNumInteriorRing() |
Aggregatfunktionen
| .NET | SQL | Hinzugefügt in |
|---|---|---|
| GeometryCombiner.Combine(group.Select(x => x.Property)) | CollectionAggregate(Eigenschaft) | EF Core 7.0 |
| ConvexHull.Create(group.Select(x => x.Property)) | ConvexHullAggregate(Eigenschaft) | EF Core 7.0 |
| UnaryUnionOp.Union(group.Select(x => x.Property)) | UnionAggregate(Eigenschaft) | EF Core 7.0 |
| EnvelopeCombiner.CombineAsGeometry(group.Select(x => x.Property)) | EnvelopeAggregate(Eigenschaft) | EF Core 7.0 |