繁体   English   中英

如何修复实体框架局部类方法调用?

[英]How to fix Entity Framework partial class method call?

我在Entity Framework中使用局部类从名为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;
 } 

我怎样才能解决这个问题?

问题在于EF无法将您的计算转换为SQL查询。 有两种解决方法:

  1. 在vPerson之后使用.toList()实现结果集,然后将.AsQueryable()添加到末尾。 请注意,这种方式会丢失查询的延迟执行。
  2. 尝试使用实体功能重写该操作,EF可以将其转换为SQL。 这里

EF查询被转换为SQL查询。 自定义属性不作为表中的列存在,因此无法将其转换为查询。 出于相同的原因,您不能在EF查询中使用方法(特定的数据库方法(例如SqlFunctions除外 )-无法将它们转换为SQL查询。 因此,您确实有两个问题:自定义属性和方法调用。 您唯一的选择是直接在查询中进行计算。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM