Sto proponendo NHibernate per un progetto che stiamo facendo nella mia azienda e mi piacerebbe sapere se NHibernate può essere ottimizzato per recuperare solo colonne specifiche su una tabella quando si utilizza il linguaggio di query Criteri.Richiama solo colonne specifiche quando si utilizzano le query di criteri?
Ad esempio. Diciamo che ho una tabella con 30 colonne e questo è mappato su un oggetto usando NHibernate che è una corrispondenza 1 per 1 contro la tabella. Tuttavia, per una particolare funzione del sistema mi interessa solo due di queste colonne.
Ora, so che posso usare HQL e fare un CreateQuery
che lo compirà ma che richiede di creare un costruttore per ciascuna combinazione di campi che vorrei recuperare in modo selettivo. Questo potrebbe essere un enorme problema dal punto di vista della manutenzione poiché non catturerò i costruttori mancanti fino al runtime.
Mi piace il linguaggio di query Criteria poiché genera SQL parametrizzato anziché query SQL dirette da HQL. Vedo che esiste un modello "Escludi" per non includere determinate colonne ma nella maggior parte dei casi includerò più colonne di quelle di esclusione.
Grazie al commento qui sotto ho esaminato le proiezioni e questa non è ancora la situazione ideale per me. Quando si utilizza il seguente:
var list = session
.CreateCriteria(typeof (Task))
.SetProjection(Projections
.ProjectionList()
.Add(Projections.Property("Id")))
.List();
io alla fine con le variabili list
solo di essere interi, preferisco avere il mio oggetto piena attività, ma con tutti i campi impostati ai valori di default. È possibile? Tutto ciò che vedo finora dice no.
Si prega di consultare l'aggiornamento al mio post in risposta alla domanda. – Danielg