Domanda

Quando si crea un criterio, è possibile aggiungere restrizioni che si applicano a una proprietà. Ci sono 2 modi di creazione di una restrizione:

Restrictions.Eq(string propertyName, object value)
o
Restrictions.Eq(IProjection projection, object value)

La cosa è, non mi sento nomi di proprietà che passa confortevoli come stringhe, dal momento che se mai cambiare, il mio progetto verrà compilato come al solito e l'eventuale mancata corrispondenza dei nomi verrà trovato solo durante unit testing. Sto cercando di implementare TDD, ma non accadrà presto, quindi sto cercando di dipendenze limite di unità di test per verificare la presenza di errori (fino a quando riusciamo ad abbracciare TDD).

Tutte le idee? Grazie in anticipo!

È stato utile?

Soluzione

Usa LINQ, QueryOver (NH3.x) o NH Lambda estensioni (NH2.x) o NHibernate estensioni di espressione (NH1.2 )

Tutti questi sono più fortemente tipizzato-non solo con le stringhe.

Altri suggerimenti

posso sentire il tuo dolore.

Ma non c'è modo di mettere riferimento dinamico alle proprietà utilizzando proiezioni a criteri di API, così come non è possibile effettuare la mappatura NHibernate rilevare una tabella o una colonna cambio di nome.

Facendo una ricerca e sostituzione di pari passo con "Proprietà" con il lavoro nella maggior parte dei casi.

Fino a quando si dispone di una copertura completa di test di unità (non è vero?) Non dovrebbe essere un problema, dovrebbe: -?)

Un altro motivo per evitare di usare le stringhe di nomi di proprietà è che il refactoring utilizzando per esempio ReSharper non può risolvere tali riferimenti. Questo è dove Fluent NHibernate brilla davvero.

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