2009-01-13 8 views

Répondre

1

Si nous avons une recherche dynamique complexe, nous allons généralement construire un objet SearchParameter, puis le passer dans une méthode qui va construire nos critères pour nous.

Par exemple, si nous étions à la recherche d'une personne que nous pourrions avoir un objet de recherche qui ressemble à ceci:

public class PersonSearchParameters 
{ 
    public string FirstName {get; set;} 
    public string LastName {get; set;} 

    public ICriteria GetSearchCriteria() 
    { 
     DetachedCriteria query = DetachedCriteria.For(typeof (Person)); 
     //Add query parameters 
     Return query; 
    } 
} 

Ensuite, pour chaque type de recherche, nous serons en mesure de créer le seul critère de la classe, ou nous pourrions avoir plusieurs classes de paramètres de recherche et les chaîner ensemble

+0

C'est la même chose que j'utilise Remerciez –

1

Nous utilisons HQL, mais nous essayons toujours de nous en tenir à l'API Criteria pour les requêtes complexes. Nous devons gérer beaucoup de duplication en utilisant HQL.

+0

Je ne suis pas du tout un maître chez HQL, mais il semble que la construction de requêtes complexes avec DetachedCriteria semble plus facile. Merci pour votre réponse –

1

J'utilise à peu près la même chose d'Ayende un peu plus complexe, que voulez-vous faire que vous ne pouvez pas faire avec ça? Fondamentalement, ce que nous avons ajouté est que nous avons une interface où nous définissons tous les champs où nous voulons chercher et nous appelons cela lorsque nous sommes sur le point de faire la recherche, ce qui signifie que nous pouvons facilement changer ce que nous recherchons.

Nous utilisons également Active Record dans le projet (au-dessus de mise en veille prolongée) et Tis assez cool, les charges de tâches obtient simplifiées, tu le manque de documents ne blesse parfois Cheer

+0

la chose d'interface sonne bien, pourriez-vous s'il vous plaît poster un code ici ou quelque part pourrait être mon adresse e-mail –