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

Interoperabilità tra ADO.NET e LINQ-to-SQL

L'utilizzo classico di ADO.NET e LINQ-to-SQL possono convivere in un sistema ibrido di interoperabilità. Dopo aver stabilito l'origine dati è possibile, ad esempio, aprire una SqlConnection e passarne l'istanza al DataContext per eseguire interrogazioni su quest'ultimo oggetto.

Nella presente dimostrazione facciamo riferimento al solito database Northwind. Innanzitutto, per pura praticità, creiamo un progetto Visual Basic per la Console. Tramite le modalità che già conosciamo, specifichiamo il database sopra citato come origine dati, affinchè Visual Studio generi per noi la stringa di connessione e un DataSet. Come tabella da interrogare successivamente scegliamo, sempre come esempio, la tabella Customers.

Analogo procedimento seguiamo nell'aggiungere una classe LINQ-to-SQL al progetto; anche questa punterà al medesimo database e dovrà generare una nuova entity a partire dalla tabella Customers. Le procedure da seguire per questo tipo di operazione sono descritte nel mio articolo introduttivo a LINQ-to-SQL su Visual Basic Tips & Tricks. Poi si passa al codice. In primo luogo, è necessario importare il namespace System.Data.SqlClient per istanziare la SqlConnection, quindi dichiarare un oggetto DataContext:

Imports System.Data.SqlClient

 

Module Module1

 

    Private NorthwindContext As NorthwindDataContext

Fatto questo, si istanzia e si apre la connessione:

    Sub Main()

 

        'Eseguo una connessione classica

        Dim connection As SqlConnection = New SqlConnection(My.Settings.NORTHWNDConnectionString)

        connection.Open()

L'istanza del DataContext, poi, riceve l'istanza della connessione come argomento:

        'Istanzio un DataContext passando l'istanza della connessione

        NorthwindContext = New NorthwindDataContext(connection)

Quindi possiamo interrogare l'entità e iterare il risultato, senza dimenticare di chiudere la connessione:

        Dim customers = From customer In NorthwindContext.Customers _

                        Where customer.CompanyName.StartsWith("A") _

                        Order By customer.City _

                        Select New With {customer.CompanyName, customer.ContactTitle, customer.City}

 

 

        For Each customer In customers

            Console.WriteLine("{0}, {1}, {2}", customer.CompanyName, customer.City, customer.ContactTitle)

        Next

 

        connection.Close()

 

        Console.ReadLine()

    End Sub

 

End Module

La query estrae le sole aziende clienti il cui nome inizi con la lettera A e assegna a tipi anonimi il nome dell'azienda, il nome del referente e la città del cliente. 

Si tratta, ovviamente, della mera illustrazione di una tecnica esistente e che è possibile utilizzare, indipendentemente dal fatto che possa essere o meno elegante.

Alessandro

Print | posted on giovedì 19 giugno 2008 01:01 | Filed Under [ Visual Basic LINQ ]

Powered by:
Powered By Subtext Powered By ASP.NET