Imports System.Data.Linq
Module Module1
'Per usare Linq, si devono traslare le tuple del database
'su classi del .net. Dato che uso un database di esempio
'che contiene dati relativi a persone, creo una classe
'Person.
'La classe deve esporre l'attributo Table e specificare
'eventualmente il nome della tabella da leggere e
'trasformare in oggetti dal database (in questo caso Tabella1)
<Mapping.Table(Name:="Tabella1")> _
Public Class Person
Private _ID As Int32
Private _Name, _Surname As String
'Chiave primaria
<Mapping.Column(IsPrimaryKey:=True)> _
Public Property ID() As Int32
Get
Return _ID
End Get
Set(ByVal value As Int32)
_ID = value
End Set
End Property
'Tutti i membri di classe rispecchiano un attributo
'della relazione nel database relazionale. Devono
'esporre un attributo Column che li associa alla
'colonna corrispondente (meglio usare lo stesso nome)
<Mapping.Column()> _
Public Property Nome() As String
Get
Return _Name
End Get
Set(ByVal value As String)
_Name = value
End Set
End Property
<Mapping.Column()> _
Public Property Cognome() As String
Get
Return _Surname
End Get
Set(ByVal value As String)
_Surname = value
End Set
End Property
End Class
Sub Main()
'Crea la connessione
Dim Con As New OleDb.OleDbConnection( _
"Provider=Microsoft.JET.OLEDB.4.0;Data Source=db1.mdb")
'Crea un collegamento linq a tipizzazione forte col database
'mediante la connessione
Dim DB As New DataContext(Con)
'Estra la tabella in questione, facendo uso dell'attributo
'specificato e la trasforma in una tabella di oggetti Person
Dim Persons As Table(Of Person) = _
DB.GetTable(Of Person)()
'Questa è l'istruzione Linq che da tale tabella seleziona
'solo le persone con nome Giovanni
Dim SelectedPersons = _
From P As Person In Persons Where P.Nome = "Giovanni" Select P
'Scrive i risultati a schermo
For Each P As Person In SelectedPersons
Console.WriteLine(P.Nome & " " & P.Cognome)
Next
Console.ReadLine()
End Sub
End Module