Belius' Blog

Il blog di Simone Belia
posts - 16, comments - 49, trackbacks - 23

[UPDATE] NHibernate complex queries

Pochi giorni fa avevo scritto un post  su come creare degli oggetti che incapsulassero le informazioni per filtrare dei dati in NH (e non solo).

Questo post non è altro che una piccolissima aggiunta con l'implementazione di una classe che rappresenta l'ordine dei risultati della query.

Il concetto è quello di avere una classe che contenga il campo da ordinare e la direzione di ordinamento (espressa tramite un enum).

public class OrderField
{
     
private string _field = string.Empty;
     private 
OrderDirection _direction OrderDirection.Asc;

     public string 
Field
     {
         
get return _field}
         
set { _field = value; }
     }

     
public OrderDirection Direction
     {
         
get return _direction}
         
set { _direction = value; }
     }

     
public OrderField(string field, OrderDirection direction)
     {
         _field 
field;
         
_direction direction;
     
}
}

 

public enum OrderDirection
{
      Asc,
      Desc
}
 
Visto che potrebbero verificarsi numerosi casi in cui un solo campo non basta ai fini dell'ordinamento, ho pensato fosse utile implementare una collezione che dasse la possibilità di recuperare in un colpo tutta la stringa di ordinamento.

 

public class OrderFieldList: List<OrderField>
{
      
public override string ToString()
      {
          StringBuilder sb 
= new StringBuilder("");
          if 
(this.Count >0)
          {
              sb.Append(
"ORDER BY ");
              foreach 
(OrderField of in this)
              {
                  sb.AppendFormat(
"{0} {1},", of.Field, of.Direction.ToString());
              
}

              sb.Remove(sb.Length-
11);
          
}

          
return sb.ToString();
     
}
}
 
 
 ...e per finire la sua implementazione ai fini pratici è:
 
string hql "select c from Customer c where c.Country = :country"

                
OrderFieldList ofl = new OrderFieldList();
ofl.Add(new OrderField("BirthDate", OrderDirection.Desc));
ofl.Add(new OrderField("LastName", OrderDirection.Asc));

hql +ofl.ToString();

//..........
//..........
//..........
....a presto!!!

Print | posted on martedì 16 ottobre 2007 13.37 | Filed Under [ ASP.NET Tips ]

Feedback

Gravatar

# re: [UPDATE] NHibernate complex queries

ehm... e farai una class library quando avrai finito? e ce la regalerai? :)
16/10/2007 16.22 | marco

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 7 and 1 and type the answer here:

Powered by: