我在实体框架中使用部分类来从名为vPerson的视图中计算人的年龄。
private string _age;
public string Age
{
get{return CalculateAge();}
}
private string CalculateAge()
{
return Convert.ToInt32(System.DateTime.UtcNow.Date.Year - _dob.Value.Year);
}
但是,当我在EF select中使用Age时,它不会处理查询。这是代码:
public IQueryable getData()
{
var res = from p in _context.vPerson.Select
(
p=>new PersonDetail
{
name = p.name,
dob = p.dob,
age = p.Age
}
);
return res;
}
我该如何解决这个问题?
答案 0 :(得分:2)
问题是EF无法将您的计算转换为SQL查询。有两种方法可以解决这个问题:
答案 1 :(得分:0)
EF查询被转换为SQL查询。自定义属性不作为表中的列存在,因此无法将其转换为查询。出于同样的原因,您不能在EF查询中使用方法(特定数据库方法除外,例如SqlFunctions) - 它们无法转换为SQL查询。所以你真的有两个问题:自定义属性和方法调用。您唯一的选择是直接在查询中进行计算。