2010-12-15 2 views
1

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

До сих пор моя догадка, чтобы преобразовать его в представлении к междунар, как это:

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

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

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

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

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

... но это также генерирует ошибку (Invalid отлиты из «DateTime» до «Int64»), так что не добавленная стоимость есть ,

+0

делают `формулы = "DATEIFF ('мс', ENDDATE, BeginDate) * 1000"` работы? – Firo 2012-03-06 16:44:22

ответ

1

Не точный ответ на ваш вопрос, но ... Я бы выполнил разницу в классе 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); 
} 

Таким образом, вы не перегружать RDBMS исполнительское innecesary вычитает при выполнении выбирает, и вы делаете расчет только при необходимости. Это не сопоставимое свойство и не должно быть (все равно читайте). MyDifference можно использовать и nowone может сказать или заботится, как или кто делает расчет

Надеется, что это помогает

+0

Мне нужны они для отображения в обзорной сетке. Таким образом, я не могу применять сортировку по столбцу продолжительности в общем виде, поэтому нет опции для меня ... – Koen 2010-12-15 15:57:22

Смежные вопросы