簡體   English   中英

實體框架核心支持SQL空間數據類型 - DBGeography?

[英]Entity Framework Core support for SQL Spatial Data Types - DBGeography?

我想使用ASP.NET Core Razor Pages制作一個Web應用程序,它在SQL Server中有一些地理數據。 在使用現有SQL DB的EF Core創建EF模型時,Visual Studio會提供錯誤,指出它不支持Geography數據類型。 有沒有辦法在使用Entity Framework或EF Core的ASP.NET Core項目中使用像Geography這樣的SQL空間數據類型?

鏈接顯示了一些解決方法,但沒有開箱即用。

此鏈接是處理此問題的較舊帖子。

實體框架核心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博客文章中寫到了這一點。

我只是偶然發現了你的帖子以及你提到的第一個鏈接。 僅在幾天前,發布了EntityFrameworkCore 2.2.0的預覽版本,該版本應該支持SQL Server中的空間數據類型。

請參閱https://github.com/aspnet/EntityFrameworkCore/issues/1100#issuecomment-417618315和以下注釋。

我自己還沒試過,它可能不是100%工作,但它肯定值得一試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM