为了账号安全,请及时绑定邮箱和手机立即绑定

Entity Framework Core 对 SQL 空间数据类型的支

Entity Framework Core 对 SQL 空间数据类型的支

C#
一只萌萌小番薯 2021-11-14 17:10:16
我想使用 ASP.NET Core Razor Pages 制作一个 Web 应用程序,该应用程序在 SQL Server 中有一些地理数据。在使用 EF Core 从现有 SQL 数据库创建 EF 模型时,Visual Studio 给出一个错误,表明它不支持 Geography 数据类型。有没有办法在使用 Entity Framework 或 EF Core 的 ASP.NET Core 项目中使用诸如地理之类的 SQL 空间数据类型?
查看完整描述

2 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

Entity Framework Core 2.2 版引入了空间数据支持。它采用NetTopologySuite数据类型,并将它们映射到geography或geometrySQL Server的类型。您可以通过 NuGet 安装 NetTopologySuite:


Install-Package NetTopologySuite

您还需要以下 NuGet 包来为 SQL Server 提供 EF Core 空间数据支持:


Install-Package Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite

并UseNetTopologySuite在您的 EF 上下文配置中使用该选项:


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 Spatial Data 的博客文章中找到了附近的用户。


查看完整回答
反对 回复 2021-11-14
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

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

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

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


查看完整回答
反对 回复 2021-11-14
  • 2 回答
  • 0 关注
  • 211 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信