猿问

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

我想使用 ASP.NET Core Razor Pages 制作一个 Web 应用程序,该应用程序在 SQL Server 中有一些地理数据。在使用 EF Core 从现有 SQL 数据库创建 EF 模型时,Visual Studio 给出一个错误,表明它不支持 Geography 数据类型。有没有办法在使用 Entity Framework 或 EF Core 的 ASP.NET Core 项目中使用诸如地理之类的 SQL 空间数据类型?



一只萌萌小番薯
浏览 212回答 2
2回答

慕容708150

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

慕婉清6462132

我只是偶然发现了您的帖子以及您提到的第一个链接。就在几天前,EntityFrameworkCore 2.2.0 的预览版发布了,它应该支持 SQL Server 中的空间数据类型。请参阅https://github.com/aspnet/EntityFrameworkCore/issues/1100#issuecomment-417618315和以下评论。我自己还没有尝试过,它可能无法 100% 工作,但肯定值得一试。
随时随地看视频慕课网APP
我要回答