Quando creiamo una tabella di un database SqlServer possiamo associare a ogni colonna una descrizione. Come recuperare questo valore?
Facciamo l'esempio di una tabella User con una colonna Id che ha descrizione "Campo Id della tabella User".
Il campo Description è un'extendedproperty associata alla tabella e il suo valore può essere recuperato grazie la funzione fn_listextendedproperty di SqlServer (maggiori informazioni si possono trovare nel Book Online di SqlServer 2000) attraverso la seguente query:
SELECT objname, value FROM ::fn_listextendedproperty(NULL,'user','dbo',table','NOME_TABELLA', 'column', 'NOME_COLONNA') WHERE name = 'MS_Description'
Nel nostro esempio basterà sostituire NOME_TABELLA con User e NOME_COLONNA con Id(attenzione!Bisogna inserire gli apici!) . Se si vuole l'elenco di tutte le description della tabella basterà inserire il valore null (senza apici) al posto di NOME_COLONNA.
Vediamo il codice con ADO.NET:
SqlConnection conn = new SqlConnection("STRINGA_CONNESSIONE");
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT objname, value FROM ::fn_listextendedproperty(NULL,'user','dbo',table',User', 'column', null) WHERE name = 'MS_Description'"
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
string result += "Descrizione campo " + reader[0].ToString() + ": " + reader[1].ToString()+"\n";
}