簡體   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