gpt4 book ai didi

c# - GPS 与 Entity Framework 和 LINQ 协调

转载 作者:行者123 更新时间:2023-11-30 14:15:37 25 4
gpt4 key购买 nike

因此据我了解, 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com