Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq Telerik OpenAccess-具有非持久属性的搜索_Linq_Telerik_Openaccess - Fatal编程技术网

Linq Telerik OpenAccess-具有非持久属性的搜索

Linq Telerik OpenAccess-具有非持久属性的搜索,linq,telerik,openaccess,Linq,Telerik,Openaccess,我在一个项目中使用Telerik OpenAccess和SQL Server,我需要能够搜索某个特定日期的年龄。我遇到的问题是,此人的出生日期存储在一个表中,要比较的日期存储在另一个表中,这使我无法使用计算列。但是,它们连接在一起,这样我就可以通过在分部类中创建自己的非持久性属性来计算年龄,如下所示: public partial class Student { [Telerik.OpenAccess.Transient] private int? _ageUponArrival

我在一个项目中使用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创建一个计算属性,该属性将在db服务器上以可搜索的方式进行计算?

目前看来这是不可能的

似乎有一种方法可以通过Hibernate实现这一点: