Utilizzare i tipi spatial con Entity Framework Core 2.2

di Stefano Mostarda, in LINQ, Entity Framework,

La versione 2.2 di Entity Framework Core introduce il supporto nativo ai tipi spatial. Questo supporto è offerto utilizzando i tipi della libreria NetTopologySuite e dei provider di Entity Framework che mappano i tipi verso i diversi tipi esposti dai database. Su NuGet sono già presenti provider Sql Server, SQLite e PostgreSql, ma ne arriveranno anche per altri database.

Il primo passo per utilizzare i tipi spatial è creare una entity che contiene una proprietà il cui tipo è un tipo spatial così come nel prossimo esempio.

using NetTopologySuite.Geometries;

namespace Application1
{
  public class Person
  {
    public string Id { get; set; }
  
    public Point Location { get; set; }
  }
}

Il tipo Point non è del .NET Framework ma di NetTopologySuite. Una volta creata l'entity possiamo inserire oggetti nel database come facciamo per qualunque altro oggetto.

using (var context = new MyDbContext())
{
  var p = new Person { Location = new Point(-113.32456, 50.13234) { SRID = 4326 } }
  context.Add(p);
  context.SaveChanges();
}

Possiamo poi utilizzare LINQ per eseguire query.

var people =
  context.People.OrderByDescending(p => p.Location.Distance(someLocation)).ToList();

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi