2013-03-06 34 views
0

我在項目中使用Telerik OpenAccess和SQL Server,我需要能夠通過某個人的年齡搜索某個日期。我遇到的問題是,該人的出生日期存儲在一個表中,並且要比較的日期位於另一個表中,這使我無法使用計算列。他們,然而,連接在一起,這樣我可以通過像這樣在局部類創建我自己的非持久化屬性計算年齡:Telerik OpenAccess - 使用非持久性屬性搜索

public partial class Student 
{ 
    [Telerik.OpenAccess.Transient] 
    private int? _ageUponArrival; 
    public virtual int? AgeUponArrival 
    { 
     get 
     { 
      try 
      { 
       var dob = DateTime.Parse(this.StudentProfiles.First().Person.YearOfBirth); 
       var programStart = (DateTime)(this.StudentPrograms.First().ProgramStart); 
       this._ageUponArrival = programStart.Year - dob.Year; 
       if (dob > programStart.AddYears(-(int)(this._ageUponArrival))) 
       { 
        (this._ageUponArrival)--; 
       } 
      } 
      catch (Exception e) 
      { 
       this._ageUponArrival = null; 
      } 

      return _ageUponArrival; 
     } 
     set { } 
    } 
} 

請忽略這些表是如何糟糕成立,它的東西,我在這一點上繼承和不能改變。這種方法的問題是該屬性無法用Linq進行搜索。我知道我可以創建一個能夠爲我做到這一點的視圖,但我寧願不必爲此保留一個視圖。有什麼辦法可以通過Telerik創建一個計算的屬性,這個屬性可以在數據庫服務器上以可搜索的方式計算出來嗎?

+0

它看起來像有一種方法可以與Hibernate做到這一點:[http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/mapping.html#d0e6481](http ://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/mapping.html#d0e6481) – bjonnn 2013-03-06 21:05:32

回答