Domanda

Sto avendo tempi duri convincenti NHibernate (EF è stato in grado di farlo) per filtrare in base alla proprietà ora di una proprietà un'entità DateTime. Il mio soggetto più o meno così:

public class Invoice {
    // ...
    public DateTime Time { get; set; }
    // ...
}

Ho bisogno di recuperare tutte le fatture che sono state "fatte" ad una certa ora (diciamo 22). Una possibile interrogazione potrebbe essere:

from   i in s.Linq<Invoice>()
where  i.Type.Id == Invoice.Type.Local &&
       i.TimeOfRegister.Hour == 22
select i

Comunque mi viene generato un'eccezione che indica che l'Ora di proprietà di TimeOfRegister non può essere risolto ...

LE: I dettagli del eccezione: non poteva risolvere proprietà: TimeOfRegister.Hour di: MyCompany.Entities.Invoice

È stato utile?

Soluzione 2

Beh mi è stato consigliato da un collega di prendere un'altra strada:

Definisci un int (o un byte) Proprietà sull'entità (diciamo "HourOfRegister") e poi nella mappa classe di mappatura ad una formula:

Map(a => a.HourOfRegister).Formula("DATEPART(HOUR, TimeOfRegister)");

Allora posso utilizzarlo nella query come piace a me.

Altri suggerimenti

Suona come NHibernate non vede il DateTime come un componente che ha proprietà si può scegliere su, lo vede come una singola proprietà. Probabilmente avete di utilizzare una funzione per ottenere la parte ora del DateTime.

In HQL per SQLServer2005: ora (i.TimeOfRegister)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top