プロジェクトで Telerik OpenAccess と SQL Server を使用していますが、特定の日付の年齢で検索できるようにする必要があります。私が直面している問題は、人の生年月日が 1 つのテーブルに格納され、比較対象の日付が別のテーブルに格納されているため、計算列を使用できないことです。ただし、これらは結合されているため、次のように部分クラスに独自の非永続プロパティを作成して年齢を計算できます。
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 で検索できないことです。これを行うビューを作成できることはわかっていますが、このためだけにビューを維持する必要はありません。検索可能な方法で db サーバー上で計算される Telerik を介して計算されたプロパティを作成する方法はありますか?