Принятый ответ устарел. EF5 представил API для работы с пространственными данными. Вот пример из MSDN;
Модель
using System.Data.Spatial; //For EF5
//using System.Data.Entity.Spatial; //For EF6
public class University
{
public int UniversityID { get; set; }
public string Name { get; set; }
public DbGeography Location { get; set; }
}
DbContext
using System.Data.Entity;
public partial class UniversityContext : DbContext
{
public DbSet<University> Universities { get; set; }
}
Сохранять и получать данные
using (var context = new UniversityContext ())
{
context.Universities.Add(new University()
{
Name = "Graphic Design Institute",
Location = DbGeography.FromText("POINT(-122.336106 47.605049)"),
});
context. Universities.Add(new University()
{
Name = "School of Fine Art",
Location = DbGeography.FromText("POINT(-122.335197 47.646711)"),
});
context.SaveChanges();
var myLocation = DbGeography.FromText("POINT(-122.296623 47.640405)");
var university = (from u in context.Universities
orderby u.Location.Distance(myLocation)
select u).FirstOrDefault();
Console.WriteLine(
"The closest University to you is: {0}.",
university.Name);
}
Приведенный выше результат запроса должен быть The closest University to you is: School of Fine Art.
См. всю статью и видео здесь.