我想使用 ASP.NET Core Razor Pages 创建一个 Web 应用程序,该应用程序在 SQL Server 中包含一些地理数据。当使用 EF Core 从现有 SQL DB 创建 EF 模型时,Visual Studio 会给出一个错误,指出它不支持 Geography 数据类型。有没有办法在使用 Entity Framework 或 EF Core 的 ASP.NET Core 项目中使用地理等 SQL 空间数据类型?
This链接显示了一些解决方法,但没有开箱即用。
This link是处理这个问题的旧帖子。
最佳答案
Entity Framework Core 2.2 版引入了空间数据支持。它使用 NetTopologySuite数据类型并将它们映射到 geography
或 geometry
SQL Server 类型。
您可以通过 NuGet 安装 NetTopologySuite:
Install-Package NetTopologySuite
并且您还需要以下 NuGet 包来支持 SQL Server 的 EF Core 空间数据:
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();
我在我的 Finding Nearby Users with Entity Framework Core Spatial Data 中写过它博文。
关于c# - Entity Framework Core 对 SQL 空间数据类型的支持 - DBGeography?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51681889/