c# - GPS 与 Entity Framework 和 LINQ 协调

标签 c# .net linq entity-framework gps

因此据我了解, Entity Framework 尚不支持 Geography SQL 类型。

我想知道是否有人可以解决我遇到的问题。我有一个 c# 类,它有一些使用 Entity Framework 和 LINQ 的数据访问方法。 这些方法将 GPS 坐标传递给它们。数据库(和 Entity Framework 类型)上有经度和纬度字段,这些字段在创建行时填充。这一切都很好。

我想要做的是让我的 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; } 
}

数据库上下文

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); 
}

以上查询结果应该是离你最近的大学是:美术学院

参见 whole article and video here.

关于c# - GPS 与 Entity Framework 和 LINQ 协调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9665434/

相关文章:

c# - 从 Main 函数最大化窗口?

c# - 帮助对 Except 扩展方法进行新的覆盖

c# - 如何将 CustomControl 属性绑定(bind)到控件本身?

c# - 重命名 WCF 服务时的问题

c# - 如何使用c#高效地在数据库中写入数据?

java - 如何以编程方式根据架构验证 JSON 字符串?

c# - 关闭对话框和子窗体并将结果传递给主窗体

c# - .NET 是否有 KeyValuePair<K,V> 的现有二进制搜索类

c# - 使用带有存储过程的 Linq 是否比使用带有生成 SQL 的 Linq 执行得更好?

c# - 我怎样才能改进这个排序代码?