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-1, 1);
}
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!!!
Microsoft ha messo a disposizione da poco tempo un'estensione di ASP.NET chiamata Dynamic Data Controls.
Questa estensione non è altro che una libreria di controlli che collegandosi ad un DB ne recupera lo schema e genera a runtime tutte le pagine che sono necessarie al dataentry e la visualizzazione delle tabelle.
L'estensione potete trovarla a questo indirizzo: http://www.asp.net/downloads/futures/
Ancora una volta le scelte che fa Microsoft mi fatto restare a bocca aperta. Stanno lavorando moltissimo su LINQ e l'EF eppure tirano fuori un set di controlli che vanno completamente contro al DDD.
[Pensiero] :-)
...valà, non dirmi che anche i dipendenti Ms hanno il vicino rompi che gli dice...."dai fammi un programmino per la gestione dei miei dvd...tanto per te che ci capisci è un attimo".
Se questo fosse, allora mi scuso e ringrazio!!