Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

Esempio di LINQ-to-SQL in ASP.NET: terza parte

Giusto ieri abbiamo visto, in questo post, come aggiungere un cliente al nostro database Northwind, tramite LINQ-to-SQL, nell'ambito di una Web application.

Oggi vediamo come eliminare un cliente dal database e come aggiornarne i dati. Partiamo proprio da quest'ultimo aspetto aggiungendo, in fase di design, un nuovo pulsante per l'aggiornamento dei dati di un cliente.

Supponiamo di voler modificare la città del customer precedentemente aggiunto. Vediamo in azione un'espressione lambda che estrae il singolo elemento di una sequenza (quindi il nostro customer) corrispondente ai criteri specificati:

    Protected Sub Button4_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button4.Click

 

        'Estrae l'unico customer che corrisponde al criterio specificato

        Dim myCustomer = (From customers In dc.Customers _

                          Where customers.ContactName = "Alessandro Del Sole" _

                          Select customers).Single

 

        myCustomer.City = "Roma"

 

        'Invia i cambiamenti

        dc.SubmitChanges()

        'e riesegue la query

        ExecuteQuery() 

    End Sub

Se ora provate ad avviare l'applicazione e aggiornare i dati del cliente, ecco come questo appaia nel browser:

Potete così osservare come la città del cliente sia stata effettivamente modificata (da Cremona a Roma). L'ultimo passaggio è quello di implementare un pulsante per l'eliminazione del customer e di scrivere il relativo codice che lo gestisca. Anche in questo caso sfruttiamo una lambda expression per ottenere il customer desiderato, da eliminare poi con il metodo DeleteOnSubmit del DataContext:

    Protected Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click

 

        Try

            'Tramite una espressione lambda ottiene l'elemento univoco la cui

            'proprietà ContactName sia uguale a "Alessandro Del Sole"

            Dim myCustomer = dc.Customers.Single(Function(cust) cust.ContactName = "Alessandro Del Sole")

 

            dc.Customers.DeleteOnSubmit(myCustomer)

 

            dc.SubmitChanges()

            ExecuteQuery()

 

        Catch ex As InvalidOperationException

            'Il customer non esiste, inserire qui eventuale codice

            'per comunicarlo all'utente

        End Try

    End Sub

Si noti l'intercettazione di una eccezione di tipo InvalidOperationException che viene sollevata nel momento in cui si tenta di eliminare un cliente inesistente.

L'esempio iniziale si conclude con questo post. A questo indirizzo è disponibile il codice sorgente aggiornato. Ovviamente si tratta di un esempio introduttivo, in uno scenario reale si prevederà sicuramente la possibilità di consentire all'utente di immettere i dati di cui ha necessità piuttosto che intervenire su un singolo cliente come nell'esempio proposto, ad ogni buon conto abbiamo iniziato a vedere come i paradigmi di LINQ visti in altre sedi possano essere utilizzati, in maniera sostanzialmente uguale alle applicazioni Windows, anche in scenari ASP.NET.

Alessandro

Print | posted on giovedì 1 maggio 2008 17:03 | Filed Under [ Visual Basic LINQ ]

Powered by:
Powered By Subtext Powered By ASP.NET