Продолжительность отображения с помощью NHibernate - PullRequest
1 голос
/ 15 декабря 2010

У меня есть представление базы данных (Sql Server 2005) с столбцом Duration (EndDate - StartDate), и я хочу, чтобы это было сопоставлено со свойством TimeSpan в .NET.

Пока что мое лучшее предположение - преобразовать его в представлении типа int, например:

DATEDIFF(ms, StartDate, EndDate) * 10000 AS Duration

... но это кажется мне уродливым решением.

Каков наилучший способ сделать это?

EDIT: Я также пытался использовать формулу:

<property name="Duration" formula="EndDate - StartDate" type="timespan" />

... но это также приводит к ошибке (неверное приведение от DateTime к Int64), поэтому там нет добавленной стоимости.

1 Ответ

1 голос
/ 15 декабря 2010

Не точный ответ на ваш вопрос, но ... я бы выполнил разницу в моем классе nhibernate.

myclass.cs

public virtual DateTime dstart {get;set;}
public virtual DateTime dend {get;set;}

// This property not being part oh nhibernate mapping
public TimeSpan MyDifference
{
  get {return dend.Subtract(dstart);
}

Таким образом, вы не перегружаете СУБД, выполняющую необоснованные вычитания, при выполнении выборок, и выполняете вычисления только при необходимости. Это не отображаемое свойство и не должно быть (все равно только для чтения). MyDifference можно использовать, и теперь никто не может сказать или волнует, как или кто делает расчет

Надеюсь, это поможет

...