【问题标题】:Entity Framework Core support for SQL Spatial Data Types - DBGeography?SQL 空间数据类型的实体框架核心支持 - DBGeography?
【发布时间】:2018-08-04 02:16:45
【问题描述】:

我想使用 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。您将需要使用 Entity Framework 6(如果您以 .NET Framework 为目标,则可以在 ASP.NET Core 中使用)
  • 相关问题:stackoverflow.com/questions/38728227/…。 EF Core 还不支持空间类型;您需要使用Microsoft.SpatialSystem.Spatial 来执行此操作。
  • @CamiloTerevinto 如果针对 .NET Framework,EF6 是否可以与 ASP.NET Core 无缝协作?在这样做的过程中,您仍然可以使用 docker 在其他平台上部署 ASP.NET Core 吗?
  • 否,因为您需要针对 .NET Framework(即仅限 Windows)

标签: c# entity-framework-core


【解决方案1】:

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 博客文章中写过它。

【讨论】:

  • 您的意思是安装包Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite 吗?
【解决方案2】:

我刚刚偶然发现了您的帖子以及您提到的第一个链接。就在几天前,EntityFrameworkCore 2.2.0 的预览版发布了,它应该支持 SQL Server 中的空间数据类型。

请参阅https://github.com/aspnet/EntityFrameworkCore/issues/1100#issuecomment-417618315 和以下 cmets。

我自己还没有尝试过,它可能无法 100% 工作,但肯定值得一试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 2021-09-30
    • 2022-01-17
    • 2019-03-10
    相关资源
    最近更新 更多