Negli ultimi giorni ho utilizzato il wizard per la creazione di un ObjectDataSource. Nella prima schermata, dove vengono mostrati gli oggetti che si possono utilizzare come sorgente, c'è una casella di nome Show only data components, di cui ignoravo il significato. Questa mattina, mentre cercavo tutt'altro, ho capito a cosa serve: si tratta di una funzione che ha che fare con gli attributi DataObject, DataObjectMethod e DataObjectField. Questi sono una sorta di "aiuti" per il wizard: grazie ad essi, infatti, la procedura guidata è in grado di proporre automaticamente le scelte più corrette per la definizione dell'ObjectDataSource.
Mi spiego meglio. Mettendo il segno di spunta su Show only data components, nella casella Choose your bunisess object vengono mostrate solo le classi decorate con l'attributo DataObjectAttribute. Poi, nella schermata successiva, in cui si selezionano i metodi da eseguire per le operazioni di SELECT, UPDATE, INSERT e DELETE, ogni ComboBox propone di default il metodo della classe decorato con il DataObjectMethodAttribute corrispondente. Ad esempio:
[DataObjectMethod(DataObjectMethodType.Update)]
public static void UpdateMethod(/*parametri*/)
{
throw new NotImplementedException();
}
[DataObjectMethod(DataObjectMethodType.Insert)]
public static void InsertMethod(/*parametri*/)
{
throw new NotImplementedException();
}
Con queste dichiarazioni, il wizard propone rispettivamente, per le operazioni di UPDATE e INSERT, i metodi UpdateMethod e InsertMethod. Infine, l'attributo DataObjectField consente di specificare se il campo della sorgente dati corrispondente alla proprietà decorata con tale attributo è una chiave primaria, è un campo identità e ammette valori null. Queste informazioni sono utilizzate per impostare alcune proprietà del controllo collegato con l'ObjectDataSource in questione.