2010-05-13 55 views
3

我有一個非常簡單的表與Datetime列,我有這個映射在我的域對象。流利NHibernate映射和公式/日期部分

MyDate是數據庫中日期時間列的名稱。

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)"); 

這是工作都很棒....但是週日期部分。

我NHProf看到了一個選擇SQL生成和這裏的問題 它是正確的,但對於一週日期部分產生的所有SQL .. 這是SQL的一部分生成:

....日期部分(日期,MyDate)... .... Datepart(month,MyDate)... .... Datepart(year,MyDate)... .... Datepart(hour,MyDate)... .... Datepart(minute,MyDate)... .... Datepart(second,MyDate)... .... Datepart(this_.week,MyDate)...

其中this_是nhibernate使用的表的別名。

因此它將datepart東西的關鍵字視爲一列或類似的東西。爲了說明沒有被稱爲星期的列或屬性。

有些幫助嗎?

歡呼

亞歷山德羅

回答

1

以前沒有回答這個問題。把間隔放在引號中應該可以工作,例如:

Map(x => x.WeekNo).Formula(@「DATEPART(」「week」「,Datetime)」);