我有这样一种情况:我有一个条目表,将在其中进行查询,但在某些情况下,我将有更多的信息可用。
例如,如果我有一个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; }
但是,由于没有“Distance”列,名称查询失败。我还尝试扩展Person类:
public class PersonWithDistance: Person {
public float Distance { get; set; }
}
但这导致生成映射的方式出现更多问题。
实施这样的功能应该采用什么正确的方式?是否需要为距离查询结果创建完全独立的类?