Question

Lorsque vous créez un critère, vous pouvez ajouter des restrictions applicables à une propriété. Il y a 2 façons de créer une restriction:

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

La chose est, je ne sens pas les noms de propriétés confortables de passage sous forme de chaînes, car s'ils changent jamais, mon projet établira comme d'habitude et toute disparité de nommage possible ne sera trouvée que lors de tests unitaires. Je suis en train de mettre en œuvre TDD mais cela ne se produira pas de sitôt, alors je suis en train de limiter les dépendances de tests unitaires pour vérifier les erreurs (jusqu'à ce que nous parvenons à adopter TDD).

Toutes les idées? Merci d'avance!

Était-ce utile?

La solution

Utilisez LINQ, QueryOver (NH3.x) ou NH Lambda Extensions (NH2.x) ou NHibernate Extensions d'expression (NH1.2 )

Tous ces éléments sont plus fortement typée que d'utiliser simplement des chaînes.

Autres conseils

Je peux sentir la douleur.

Mais il n'y a pas moyen de mettre référence dynamique à vos propriétés en utilisant les projections dans l'API critères, comme vous ne pouvez pas faire la cartographie NHibernate détecter un changement de nom de la table ou de la colonne.

Faire une recherche et remplacer étape par étape avec « Propriété » avec le travail dans la plupart des cas.

Tant que vous avez une couverture complète des tests unitaires (vous ne vous?), Il ne devrait pas être un problème, il faut: -?)

Une autre raison d'éviter d'utiliser des chaînes pour les noms de propriété est que la refactorisation en utilisant par exemple ReSharper ne peut pas corriger ces références. C'est là Fluent NHibernate brille vraiment.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top