Frage

Wenn Sie ein Kriterium erstellen, können Sie Einschränkungen hinzufügen, die auf eine Eigenschaft anzuwenden. Es gibt zwei Möglichkeiten, eine Einschränkung zu erstellen:

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

Das Ding ist, ich fühle mich nicht wohl beiläufig Eigenschaftsnamen als Strings, da, wenn sie jemals ändern, mein Projekt wie gewohnt kompiliert und ein möglicher Namenskonflikt wird nur während der Unit-Tests gefunden werden. Ich versuche, TDD zu implementieren, aber es wird nicht so bald geschehen, so dass ich zu begrenzen Abhängigkeiten von Unit-Tests bin versucht, auf Fehler zu überprüfen (bis wir verwalten TDD zu umarmen).

Irgendwelche Ideen? Vielen Dank im Voraus!

War es hilfreich?

Lösung

Mit LINQ, QueryOver (NH3.x) oder NH Lambda Extensions (NH2.x) oder NHibernate Expression Extensions (NH1.2 )

Alle diese sind mehr stark typisierte als nur Strings.

Andere Tipps

ich Ihren Schmerz fühlen kann.

Aber es gibt keine Möglichkeit, dynamische Bezug auf Ihre Eigenschaften zu setzen Projektionen in Kriterien-API, so wie du nicht nHibernate Zuordnung einer Tabelle oder Spalte Namensänderung erkennen machen kann.

Doing ein Suchen und Ersetzen Schritt für Schritt mit „Property“ mit der Arbeit in den meisten Fällen.

Solange Sie eine vollständige Abdeckung von Unit-Tests haben (Sie nicht?) Es sollte kein Problem sein, sollte es: -)

Ein weiterer Grund, mit Zeichenfolge für Eigenschaftsnamen zu vermeiden ist, dass Refactoring mit z.B. ReSharper kann nicht diese Verweise beheben. Dies ist, wo Fluent NHibernate wirklich glänzt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top