Ben*_*ron 3 .net c# linq gps entity-framework
因此,根据我的内容,实体框架中尚不支持Geography SQL类型.
我想知道是否有人能解决我遇到的问题.我有一个ac#类,它有一些使用实体框架和LINQ的数据访问方法.这些方法正在将GPS坐标传递给它们.数据库(和实体框架类型)上有经度和纬度字段,这些字段在创建行时填充.一切正常.
我想要做的是让我的LINQ查询拉回给定GPS坐标附近(半径范围内)的行.我不想开始使用存储过程,因为这将是架构更改.
有没有人对此有任何想法?我正在努力争取创意.
接受的答案已过时.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; }
}
Run Code Online (Sandbox Code Playgroud)
的DbContext
using System.Data.Entity;
public partial class UniversityContext : DbContext
{
public DbSet<University> Universities { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
持久化并检索数据
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);
}
Run Code Online (Sandbox Code Playgroud)
上面的查询结果应该是 The closest University to you is: School of Fine Art.
归档时间: |
|
查看次数: |
2511 次 |
最近记录: |