Voglio creare un'applicazione Web utilizzando ASP.NET Core Razor Pages che ha alcuni dati geografici in SQL Server. Visual Studio indica che non supporta il tipo di dati Geography durante la creazione del modello EF utilizzando EF Core da un DB SQL esistente. Esiste un modo per utilizzare i tipi di dati spaziali SQL come la geografia in un progetto ASP.NET Core utilizzando Entity Framework o EF Core?
Questo link mostra alcune soluzioni alternative, ma nulla è pronto all'uso.
Questo link è un post precedente che tratta questa domanda.
Il supporto dei dati spaziali è stato introdotto con la versione 2.2 di Entity Framework Core. Utilizza i tipi di dati NetTopologySuite e li mappa sulla geography
o sulla geometry
tipi di SQL Server. Puoi installare NetTopologySuite tramite NuGet:
Install-Package NetTopologySuite
E avrai anche bisogno del seguente pacchetto NuGet per il supporto dei dati spaziali EF Core per SQL Server:
Install-Package Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite
e per utilizzare l'opzione UseNetTopologySuite
nella configurazione del contesto EF:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(
@"my connection string",
x => x.UseNetTopologySuite());
}
Quindi puoi fare qualcosa del genere:
var nearestCity = db.Cities
.OrderBy(c => c.Location.Distance(currentLocation))
.FirstOrDefault();
Ne ho scritto nel mio post sul blog Trovare utenti vicini con Entity Framework Core Spatial Data .