2010-08-31 11 views
1

Lorsque vous créez un critère, vous pouvez ajouter des restrictions s'appliquant à une propriété. Il y a 2 façons de créer une restriction:Utilisation de restrictions NHibernate sans chaînes dans le nom de la propriété

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

La chose est, je ne me sens pas les noms de propriété confortable qui passe sous forme de chaînes, car s'ils changent jamais, mon projet compilera comme habituel et toute discordance de nommage possible ne sera trouvée que pendant les tests unitaires. J'essaye d'implémenter TDD mais cela n'arrivera pas bientôt, donc j'essaie de limiter les dépendances des tests unitaires pour vérifier les erreurs (jusqu'à ce que nous parvenions à adopter TDD).

Des idées? Merci d'avance!

Répondre

0

Je peux sentir votre douleur.

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

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

+0

Ouais, j'y ai pensé aussi, mais malheureusement je ne peux pas vraiment compter sur mes coéquipiers, si vous voyez ce que je veux dire ... – viniciushana

0

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 le refactoring utilisant par ex. Resharper ne peut pas réparer ces références. C'est là que Fluent NHibernate brille vraiment.

+0

NHibernate fluide est seulement pour la cartographie. L'OP demande comment éviter les chaînes quand * interroger * –