EF Core 2.2中增加了空间支持。以及稍后通过PostgreSQL、SQL Server和SQLite的NetTopologySuite包。
我们有一个MVC Core(3(应用程序,它使用Microsoft.SqlServer.Types(14.0(库。然而,这个库主要是为.NET4设计的,而不是核心。有没有一个等价的库可以在MVC核心(3(应用程序中使用?
非常感谢。
这允许您使用空间属性类型,并让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));