У меня есть класс Linq, который имеет свойства StartTime и FinishTime. Я пытаюсь добавить свойство RunTime к классу, который вычисляется как FinishTime - StartTime. Мой первый подход, чтобы добавить его в качестве неотображенной собственности и сделать расчет в ГЭТЕ():C# Отображение расчетной колонки с Linq
[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.
Мой следующий подход был попытаться сделать это столбец с атрибутом «Expression» (который я не могу быть с помощью правильно):
[Column(Expression = "DATEDIFF(ss, Start_Time, Finish_Time) AS RunTime")]
public int RunTime { get; set; }
Но это приводит к ошибке: «Invalid имя столбца«RunTime »«. Это снова имеет смысл, потому что на карте нет столбца RunTime.
В текущей среде, в которой я работаю, я не могу изменить базу данных. Есть ли способ добавить это свойство в мой класс и использовать его в запросе сортировки?
Спасибо!
Только FYI - сеттер в свойстве RunTime будет вызывать исключение StackOverflow, если вы его вызываете. Лучше просто получить доступ к аксессуарам и не устанавливать. –
Спасибо за ввод. Я все еще немного новичок в C#. – Paul