Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, 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

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

Operazioni di aggiunta/rimozione record in LINQ-to-SQL

Molto spesso nel lavorare con i dati si ha la necessità di aggiungere e rimuovere, tramite codice, record alle tabelle. In questo post vedremo come questo sia possibile in LINQ-to-SQL, utilizzando Visual Basic 2008.

Presupposto alla lettura di questo post è l'aver visionato il mio articolo introduttivo a LINQ-to-SQL pubblicato su Visual Basic Tips & Tricks pochi giorni fa, al fine di conoscere i passaggi necessari per aggiungere una connessione al database dimostrativo Northwind e una classe LINQ-to-SQL all'applicazione.

La classe LINQ-to-SQL dovrà essere la rappresentazione tipizzata della tabella Employees. Quindi, una volta trascinata questa dal database al designer della classe, e dopo aver eseguito il data-binding al DataContext generato dall'IDE, supponiamo di voler aggiungere, tramite codice, un nuovo impiegato alla tabella.

In primo luogo è necessario avere un riferimento al DataContext:

Dim dc As New NorthwindDataContext

In secondo luogo, bisogna istanziare un nuovo oggetto Employees ed assegnargli alcune proprietà:

    Private Sub aggiungiImpiegato()

 

        Dim impiegato As New Employees

 

        impiegato.LastName = "Del Sole"

        impiegato.FirstName = "Alessandro"

        impiegato.HireDate = DateTime.Today

Nello snippet ho specificato solo poche proprietà per il nuovo impiegato, ma in realtà ce ne sono molte a disposizione. L'assegnazione della proprietà HireDate (data di assunzione) con un valore di tipo DateTime ci servirà poi più avanti per la rimozione di impiegati tramite query expression.

Il passaggio successivo è quello di aggiungere l'impiegato alla tabella. Il metodo InsertOnSubmit della classe Employees aggiunge il nuovo oggetto alla tabella stessa, ma attende la chiamata del metodo SubmitChanges affinchè i cambiamenti siano resi effettivi:

        'Il nuovo impiegato viene aggiunto alla tabella

        dc.Employees.InsertOnSubmit(impiegato)

        'ma viene scritto nel database solo quando viene

        'richiamato il metodo SubmitChanges

        dc.SubmitChanges()

 

        'Aggiorna la sorgente dati

        EmployeesBindingSource.DataSource = dc.Employees.GetNewBindingList

    End Sub

La sorgente dati (l'oggetto BindingSource) deve essere aggiornato al fine di rendere visibili i cambiamenti nella DataGridView. A tal proposito si utilizza il metodo GetNewBindingList.

La rimozione di uno o più impiegati può essere eseguita tramite una query LINQ. Si supponga, ad esempio, di voler rimuovere dalla tabella tutti gli impiegati assunti in data odierna (da cui l'utilizzo del valore DateTime.Today nello snippet di creazione del nuovo impiegato). In primo luogo è necessario estrarre tutti gli impiegati che rispettino questa condizione:

    Private Sub rimuoviImpiegato()

 

        Dim del = From impiegato In dc.Employees _

                  Where impiegato.HireDate = DateTime.Today _

                  Select impiegato

Per rimuovere i dati ci sono due metodi, chiamati rispettivamente DeleteOnSubmit e DeleteAllOnSubmit. Il primo, come si può intuire dal nome, permette di rimuovere un singolo elemento. Il secondo, invece, consente di rimuovere tutti gli elementi facenti parte della collection ricevuta come argomento. Entrambi, poi, necessitano della chiamata al metodo SubmitChanges per finalizzare i cambiamenti. Quindi, sempre ipotizzando di voler rimuovere tutti gli impiegati assunti in data odierna ed estratti dalla precedente query, si può scrivere:

        dc.Employees.DeleteAllOnSubmit(del)

        dc.SubmitChanges()

        EmployeesBindingSource.DataSource = dc.Employees.GetNewBindingList

    End Sub

Come vedete, in maniera analoga all'aggiunta di un elemento, si utilizza il metodo GetNewBindingList per aggiornare la presentazione dei dati.

Alessandro

Print | posted on giovedì 10 aprile 2008 00:31 | Filed Under [ Visual Basic LINQ ]

Powered by:
Powered By Subtext Powered By ASP.NET