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

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

LINQ: Creare un database SQL "al volo" con Visual Basic 2008

Grazie agli oggetti DataContext, che caratterizzano LINQ-to-SQL, la creazione di database tramite codice è un procedimento reso ancora più semplice.

 

Nel seguente esempio verrà creato un database SQL a partire da una classe che rappresenta una tabella (quindi una entity) e che riprende la tipica connotazione dei file di mapping. In primo luogo, però, è necessario aggiungere un riferimento all’assembly System.Data.Linq.dll che, come sappiamo, fornisce l’infrastruttura per LINQ-to-SQL. La nostra tabella contiene tre colonne per identificare degli ipotetici sviluppatori. La classe che la definisce è la seguente:

 

Imports System.Data.Linq, System.Data.Linq.Mapping

 

<Table(Name:="Developers")> Public Class Developers

 

    Private _name As String

    Private _lastName As String

    Private _targets As String

 

    <Column(Storage:="_name")> Public Property Name() As String

        Get

            Return _name

        End Get

        Set(ByVal value As String)

            _name = value

        End Set

    End Property

 

    <Column(Storage:="_lastName")> Public Property LastName() As String

        Get

            Return _lastName

        End Get

        Set(ByVal value As String)

            _lastName = value

        End Set

    End Property

 

    <Column(Storage:="_targets", IsPrimaryKey:=True)> Public Property Targets() As String

        Get

            Return _targets

        End Get

        Set(ByVal value As String)

            _targets = value

        End Set

    End Property

End Class

I vari attributi Storage indicano il campo che contiene il valore della proprietà. Chiaramente potete specificare anche il tipo di dato (secondo quanto statuito nella sintassi SQL) per ciascuna proprietà. La fase successiva è quella di definire una classe che erediti da DataContext e che costituirà l’oggetto con cui rapportarsi:

 

Public Class DevelopersDataBase

    Inherits DataContext

 

    Private _developers As Table(Of Developers)

 

    Public ReadOnly Property Developers() As Table(Of Developers)

        Get

            Return _developers

        End Get

    End Property

 

    Sub New(ByVal connection As String)

        MyBase.New(connection)

    End Sub

End Class

Fatto questo è possibile scrivere, ad esempio, un metodo per la creazione del database vero e proprio, sfruttando il metodo di istanza CreateDatabase esposto dal DataContext:

 

    Private Sub CreateDataBase()

        Dim db As New DevelopersDataBase("C:\Developers.mdf")

 

        Try

            If db.DatabaseExists = True Then db.DeleteDatabase()

            db.CreateDatabase()

 

        Catch ex As Exception

            Console.WriteLine(ex.ToString)

        Finally

            Console.ReadLine()

        End Try

    End Sub

Poiché il tentativo di sovrascrittura di un database esistente solleverebbe un’eccezione, tramite i metodi DatabaseExists e DeleteDatabase è possibile, rispettivamente, verificare l’esistenza di un database con lo stesso nome ed eliminarlo prima di crearne uno nuovo (ovviamente, in uno scenario reale, è opportuno richiedere conferma sull’effettiva volontà di cancellare il preesistente).

 

Se volete verificare che il database sia stato creato in modo corretto, per quanto limitato dalla ristrettezza illustrativa di un post, provate ad eseguire una connessione. Potrete osservare che tutto funziona come deve.

 

Alessandro

Print | posted on lunedì 14 aprile 2008 19:32 | Filed Under [ Visual Basic LINQ ]

Powered by:
Powered By Subtext Powered By ASP.NET