空间数据支持是在Entity Framework Core 2.2版本中引入的。它使用NetTopologySuite数据类型,并将其映射到geography
或geometry
SQL Server类型。
您可以通过NuGet安装NetTopologySuite:
Install-Package NetTopologySuite
同时,您还需要以下 NuGet 包来支持 EF Core 空间数据在 SQL Server 上的使用:
Install-Package Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite
并在您的 EF 上下文配置中使用 UseNetTopologySuite
选项:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(
@"my connection string",
x => x.UseNetTopologySuite());
}
然后你可以像这样做:
var nearestCity = db.Cities
.OrderBy(c => c.Location.Distance(currentLocation))
.FirstOrDefault();
我在我的使用Entity Framework Core空间数据查找附近用户博客文章中写到了这个。
Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite
包? - Jamal Osman
Microsoft.Spatial
或System.Spatial
来实现。 - Tetsuya Yamamoto