venerdì 18 novembre 2011

Come aggiornare i dati in LINQ-to-SQL

L'approccio che ha LINQ all'aggiornamento dei dati non è del tutto intuitivo, soprattutto per chi è abituato a lavorare con SQL standard. Leggere, inserire ed eliminare è molto semplice, ma aggiornare i dati presuppone che ciò che stiamo aggiornando sia noto da DataContest di riferimento.
var prodotto = (from p in dataContext.Prodotti
               where p.IDProdotto == 1
               select p).Single();

prodotto.Name = "Il mio prodotto";

dataContext.SubmitChanges();
Come possiamo però aggiornare i dati in un database senza necessariamente doverne fare una select prima di poterli modificare?

Nella documentazione MSDN troviamo la risposta a questa domanda.

Q. Can I update table data without first querying the database?
A. Although LINQ to SQL does not have set-based update commands, you can use either of the following techniques to update without first querying:
  • Use ExecuteCommand to send SQL code.
  • Create a new instance of the object and initialize all the current values (fields) that affect the update. Then attach the object to the DataContext by using Attach and modify the field you want to change.

Il primo metodo è quello di utilizzare dei Comandi SQL (lascio a voi la valutazione sull'opportunità di questa opzione), mentre il secondo, molto più interessante, sfrutta il concetto di attaccare un oggetto ad uno specifico contesto tramite la funzione ATTACH del DataContext.

Ci sono un po' di considerazioni da fare però su questo metodo di aggiornamento dei dati. Ovviamente nel caso in cui ci siano dei tipi di dati particolari nella tabella in cui facciamo l'aggiornamento (date, campi obbligatori, ecc.) dobbiamo necessariamente valorizzare le proprietà dell'oggetto o potremmo avere dei messaggi di errore al momento del SubmitChanges.
var prodotto = new Prodotto();
prodotto.IDProdotto = 1;
prodotto.Name = "Biscotti salati";
prodotto.ProductNumber = "PR-10001";
prodotto.SellStartDate = DateTime.Parse("6/1/2011 12:00:00 AM");
prodotto.SellEndDate = null;

Prodotti.Attach(prodotto);

// Make the change here
prodotto.Name = "Biscotti dolci";

SubmitChanges();
Di seguito una serie di link in cui viene approfondito l'argomento:








mercoledì 16 novembre 2011

Rilasciati DotNetNuke 6.1.1/5.6.5

Rilasciate le versioni 6.1.1 e 5.6.5 di DotNetNuke. Il comunicato ufficiale parla di una release destinata a risolvere alcuni bug e a garantire una retro-compatibilità con le versioni precedenti.

Di seguito la release note.


Major Highlights

  • 6.1.1 - Fixed problem with the core skin object rendering CSS above the other framework inserted files, which caused problems when using core style skin objects 
  • 6.1.1/5.6.5 - Fixed issue with iFrames getting removed when content is saved
  • 6.1.1/5.6.5 - Fixed issue with the HTML module removing styling and scripts from the content
  • 6.1.1 - Fixed issue with inserting the link to jQuery after the header of the page

Updated Modules

Modules

  • HTML Module

mercoledì 2 novembre 2011

DotNetNuke 6.1

Da oggi è disponibile per il download la versione 6.1  di DotNetNuke. La novità principale rispetto alla versione 6.0 è che i portali supportano i device mobili e adattano la visualizzazione in funzione del client. In poche parole è finalmente possibile gestire i layout per i cellulari o per i tablet.


Per chi volesse leggere l'annuncio ufficiale ecco il link al post ufficiale.