【发布时间】:2011-07-15 05:01:42
【问题描述】:
我有一个要查询的条目表,但在某些情况下,我会有其他可用信息。
例如,如果我有一个people 的表,我希望能够按名称搜索,但我也希望存储一些坐标并根据它们的位置进行搜索,而且还要在对象模型中公开该距离.因此,例如,假设我的 people 表如下所示:
PersonId int
Name nvarchar(100)
Address nvarchar(100)
Latitude float(10,6)
Longitude float(10,6)
而实体类是这样定义的:
public class Person
{
public int PersonId { get; set; }
public sting Name { get; set; }
public float Latitude { get; set; }
public float Longitude { get; set; }
}
然后我可以使用以下方法轻松找到一个人:
var people = from p in myDb.People where p.Name.Contains("joe");
现在,我创建了名为CalculateDistance 的用户定义函数来处理此距离计算。所以我的 SQL 看起来像这样:
String sql = "SELECT *, dbo.CalculateDistance(" + location.X + ", " + location.Y + ", Latitude, Longitude) AS Distance FROM people ORDER BY Distance
如何在代码中表示这一点?我尝试在类中添加这样的属性:
public virtual float Distance { get; set; }
但随后名称查询失败,因为没有距离列。我还尝试扩展 Person 类:
public class PersonWithDistance: Person {
public float Distance { get; set; }
}
但这导致映射的生成方式出现更多问题。
实现这样的事情的正确方法是什么?我是否必须为距离查询的结果创建一个完全独立的类?
【问题讨论】:
标签: linq entity-framework entity-framework-4 code-first ef-code-first