受け入れられる回答は古いです。 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.
参照してください。 whole article and video here.
EF5から始めて、DbGeographyのサポートが追加されました。私の答えを見てください。 –