Свободное отображение NHibernate и формулы / DatePart - PullRequest
3 голосов
/ 13 мая 2010

У меня есть очень простая таблица со столбцом Datetime, и у меня есть это отображение в моем доменном объекте.

MyDate - это имя столбца datetime в БД.

public virtual int Day { get; set; }
public virtual int Month { get; set; }
public virtual int Year { get; set; }
public virtual int Hour { get; set; }
public virtual int Minutes { get; set; }
public virtual int Seconds { get;set; }
public virtual int WeekNo { get; set; }

Map(x => x.Day).Formula("DATEPART(day, Datetime)");
Map(x => x.Month).Formula("DATEPART(month, Datetime)");
Map(x => x.Year).Formula("DATEPART(year, Datetime)");
Map(x => x.Hour).Formula("DATEPART(hour, Datetime)");
Map(x => x.Minutes).Formula("DATEPART(minute, Datetime)");
Map(x => x.Seconds).Formula("DATEPART(second, Datetime)");
Map(x => x.WeekNo).Formula("DATEPART(week, Datetime)");

Это работает все отлично .... но Week Datepart.

Я видел с NHProf создание sql для выбора, и вот проблема в том, что он генерирует все sql правильно, но для недели datepart .. это частьСгенерировано SQL:

.... Datepart (день, MyDate) ... .... Datepart (месяц, MyDate) ... .... Datepart (год, MyDate) ... ....Datepart (час, MyDate) ... .... Datepart (минута, MyDate) ... .... Datepart (секунда, MyDate) ... .... Datepart ( this_.week , MyDate) ...

где this_ - псевдоним таблицы, которую использует nhibernate.

, поэтому он обрабатывает ключевое слово недели для элемента datepart в виде столбца или чего-то подобного.Чтобы уточнить, нет ни одного столбца или свойств, которые называются неделей.

какая-нибудь помощь?

ура

Алессандро

Ответы [ 2 ]

1 голос
/ 02 августа 2013

Предыдущий не отвечает на вопрос. Должен работать интервал в кавычках, например:

Карта (x => x.WeekNo) .Formula (@ "DATEPART (" "week" ", Datetime)");

0 голосов
/ 15 октября 2010

Вы не указываете используемую БД, поэтому я предполагаю, что SQL Server. Попробуйте следующее

Map(x => x.WeekNo).Formula("DATEPART(wk, Datetime)");

или

Map(x => x.WeekNo).Formula("DATEPART(ww, Datetime)");

Это принятые сокращения к НЕДЕЛЕ.
Проверьте больше здесь: http://msdn.microsoft.com/en-us/library/aa258265(SQL.80).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...