2010-05-13 8 views
3

J'ai une table très simple avec une colonne Datetime et j'ai ce mappage dans mon objet domaine. MyDate est le nom de la colonne datetime du DB.Fluid NHibernate Mapping et Formules/DatePart

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

Cela fonctionne très bien .... mais Semaine Datepart.

je vis avec NHProf la génération SQL pour une sélection et est ici le problème elle génère tout le sql correctement, mais pour la semaine datepart .. cela fait partie du SQL généré:

.... DATEPART (day, MyDate) ... .... Datepart (mois, MyDate) ... .... Datepart (année, MyDate) ... .... Datepart (heure, MyDate) ... .... Datepart (minute, MyDate) ... .... Datepart (seconde, MyDate) ... .... Datepart (this_.week, MyDate) ...

où this_ est l'alias de la table utilisée par nhibernate. Il traite donc le mot-clé week pour les données de datepart comme une colonne ou quelque chose comme ça. Pour clarifier il n'y a aucune colonne ou propriétés qui s'appelle la semaine.

de l'aide?

acclamations

Alessandro

Répondre

1

Le précédent ne répond pas à la question. Mettre l'intervalle entre guillemets devrait fonctionner, par exemple:

Carte (x => x.WeekNo) .Formula (@ "DATEPART (" "semaine" "Datetime)");