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