c# - Entity Framework Core 对 SQL 空间数据类型的支持 - DBGeography?

标签 c# entity-framework-core

我想使用 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数据类型并将它们映射到 geographygeometry 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/

相关文章:

c# - 在线程中发出和处理异步 Web 服务请求

c# - 向网站添加服务引用时出错

c# - Scaffold-DbContext 实例失败 - 从现有数据库创建模型(具有个人身份的项目)

c# - 添加迁移失败,因为未安装 EntityFrameworkCore.Tools

c# - 如何在 C# 中删除选定的数组值

c# - ASP.NET MVC 路由和 Html.ActionLink

c# - 如何在 MassTransit 和 Automatonymous 中配置 EF Core 持久性?

c# - 如果不存在,EF7 sqlite 创建表

c# - 是否有 "http://schemas.microsoft.com/2003/10/Serialization/"命名空间的 xsd 文件?

entity-framework-core - 在 Entity Framework Core 中检测延迟加载