У меня есть класс Linq, который имеет свойства StartTime и FinishTime.Я пытаюсь добавить свойство RunTime в класс, который рассчитывается как FinishTime - StartTime.Мой первый подход состоял в том, чтобы добавить его как несопоставленное свойство и выполнить вычисление в get ():
[Table(Name = "Log")]
public partial class Log
{
...
[Column(Name = "Start_Time", DbType = "DateTime NOT NULL")]
public DateTime StartTime { get; set; }
[Column(Name = "Finish_Time", DbType = "DateTime NOT NULL")]
public DateTime FinishTime { get; set; }
public int RunTime
{
get { return ((TimeSpan) (this.FinishTime - this.StartTime)).Seconds; }
set { this.RunTime = value; }
}
...
}
Сначала это работало нормально, но потом, когда я пытаюсь использовать столбец для сортировки в OrderBy, Я получаю следующую ошибку: «Элемент TestProject.Models.Log.RunTime не имеет поддерживаемого перевода в SQL».Это имеет смысл, так как это свойство не сопоставлено со столбцом базы данных, оно не может сортировать его в SQL.
Мой следующий подход состоял в том, чтобы попытаться сделать его столбцом с атрибутом «Выражение» (чтоВозможно, я не правильно использую):
[Column(Expression = "DATEDIFF(ss, Start_Time, Finish_Time) AS RunTime")]
public int RunTime { get; set; }
Но это приводит к ошибке: «Неверное имя столбца« RunTime ».»Что, опять же, имеет смысл, потому что нет столбца с именем RunTime для сопоставления.
В текущей среде, в которой я работаю, я не могу изменить базу данных.Есть ли способ добавить это свойство в мой класс и использовать его в запросе сортировки?
Спасибо!