Telerik OpenAccess - 使用非持久性属性进行搜索

时间:2013-03-06 20:45:40

标签: linq telerik openaccess

我正在项目中使用Telerik OpenAccess和SQL Server,我需要能够搜索某个人在某个特定日期的年龄。我遇到的问题是,该人的出生日期存储在一个表中,并且要比较的日期在另一个表中,这使我无法使用计算列。但是,它们连接在一起,以便我可以通过在部分类中创建我自己的非持久属性来计算年龄,如下所示:

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创建一个计算属性,它将在数据库服务器上以可搜索的方式计算?

1 个答案:

答案 0 :(得分:0)