Microsoft.SqlServer.Types(14.0)访问其地理位置的步骤



我们有一个MVC Core(3(应用程序,它使用Microsoft.SqlServer.Types(14.0(库。然而,这个库主要是为.NET4设计的,而不是核心。有没有一个等价的库可以在MVC核心(3(应用程序中使用?

非常感谢。

EF Core 2.2中增加了空间支持。以及稍后通过PostgreSQL、SQL Server和SQLite的NetTopologySuite包。

这允许您使用空间属性类型,并让EF Core将它们映射到SQL Server类型,例如:

class Country
{
public int CountryID { get; set; }
public string CountryName { get; set; }
// Database includes both Polygon and MultiPolygon values
public Geometry Border { get; set; }
}

EF Core还可以在查询中使用空间函数:

var nearestCity = db.Cities
.OrderBy(c => c.Location.Distance(currentLocation))
.FirstOrDefault();

对于原始ADO.NET查询,您可以直接使用NetTopologySuite.IO.SqlServerBytes,例如:

var geometryReader = new SqlServerBytesReader { IsGeography = true };
var bytes = dataReader.GetSqlBytes(columnOrdinal).Value;
var geometry = geometryReader.Read(bytes);

var geometry = new Point(-122.129797, 47.640049) { SRID = 4326 };
var geometryWriter = new SqlServerBytesWriter { IsGeography = true };
var bytes = geometryWriter.Write(geometry);
var parameter = command.Parameters
.AddWithValue(parameterName, new SqlBytes(bytes));

最新更新