因此据我了解, 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);
}
以上查询结果应该是离你最近的大学是:美术学院
关于c# - GPS 与 Entity Framework 和 LINQ 协调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9665434/