in

dotNet Umbria

Il primo User Group in Umbria sul mondo .Net
Latest post 06-05-2008 11:39 PM by Paolo Possanzini. 5 replies.
Page 1 of 1 (6 items)
Sort Posts: Previous Next
  • 05-27-2008 1:31 PM

    • dardino
    • Top 10 Contributor
    • Joined on 05-19-2008
    • Perugia

    Tutorial WPF & LINQ - Lezione 2 - Accesso al database tramite LINQ

    Eccoci qui con la seconda lezione!
    In questa lezione vedremo come creare in automatico delle classi di accesso al database sfruttando le potenzialità di LINQ to SQL quindi vedremo come creare una listview che prelevi i dati dalla nostra tabellina e li mostri a video. Tutto questo senza scrivere una sola riga di codice !!

    4. Creazione di Classi LINQ to SQL

    In Visual Studio, Microsoft mette a disposizione un tipo di file (dbml) che ci consente di creare le classi in modo visuale senza complicarci troppo la vita. Quindi cliccate con il pulsante destro sul progetto nella finestra di esplorazione progetti e seguite il percorso "Add -> New Item ... " e vi apparirà una finestra come in figura2 dove selezionate "LINQ to SQL Classes" quindi date un nome al vostro file considerando che tutti i riferimenti poi sfrutteranno questo nome. Io ho messo "MyLinqToSQL.dbml".

    Questa operazione aggiunge tutte le dipendenze necessarie per lavorare con LINQ to SQL se controllate sulle risorse infatti dovreste avere tra gli Assembly:

    System.Data.LINQ
    System.Xml.LINQ

    Ora trascinate la vostra tabella "TIPI" dal "Server Explorer" all'area di lavoro (dovreste infatti avere il file MyLinqToSQL.dbml aperto in modalità Design). Se avete fatto tutto bene vi apparirà la vostra tabella nell'area di lavoro. Questa tabella è la rappresentazione grafica della classe "Tipi" creata in automatico da VS.
    Ora salvate il file e chiudetelo visto che per il momento non ci serve più. L'area di lavoro torna al design della finestra Window1 del progetto.

  • 05-27-2008 6:03 PM In reply to

    • dardino
    • Top 10 Contributor
    • Joined on 05-19-2008
    • Perugia

    Re: Tutorial WPF & LINQ - Lezione 2 - Accesso al database tramite LINQ

    5. Creazione della LISTVIEW

    Per inserire controlli in una form WPF il mio consiglio è di utilizzare Expression Blend. Aprite Expression Blend (senza chiudere il progetto VS) e caricate il progetto TestWPFLinqToSql. Vi comparirà la vostra window1. Cercate il controllo ListView nella toolbar a sinistra (probabilmente dovrete aprire l'Asset Library cliccando sul pulsante ">>" quindi cercate ListView e fateci Click, verrà aggiunto alla toolbar) quindi fate doppio click su di esso e vedrete che vi si posizionerà in alto a sinistra. impostate i margini a 0,0,0,40 così da lasciare lo spazio per i futuri bottoni.

    A questo punto andate nel pannello delle proprietà (sempre di expression studio) e se non vi da problemi di refresh potete scorrerlo fino a trovare "miscellaneous" che è una sezione compattata.
    Cliccate su di essa e, sempre se non avete problemi di refresh, potete scorrerla fino a trovare "View" che è anch'essa una sezione compattata, sempre cliccandoci sopra la aprite e scorrete fino a trovare la voce "columns" che invece è una collezione per cui avrete un pulsantino con "..." scritto sopra.
    Cliccateci e se tutto va bene dovrebbe comparirvi il "Collection Editor" delle colonne.
    Create 1 colonna (l'altra già c'è) poi selezionate la prima e impostate la Proprietà "Header" in "Codice"
    Selezionate la seconda e impostate la proprietà "Header" a "Descrizione".
    Ora chiudete premendo OK.
    Visto che probabilmente avrete problemi di refresh anche qui, vi consiglio di chiudere la finestra di design della Window1 e riaprirla dal pannello "Project".
    A questo punto dovreste avere come in fig.3

  • 05-27-2008 6:49 PM In reply to

    • dardino
    • Top 10 Contributor
    • Joined on 05-19-2008
    • Perugia

    Tutorial WPF & LINQ - Lezione 2 - Accesso al database tramite LINQ

    6. Associare i dati alla ListView

    Ora comincia il bello.
    Premete F5 e magicamente il programma si avvierà, correggete errori se ce ne sono ma credo che non ve ne siano.
    Ora chiudete l'applicazione appena eseguita e selezionate il controllo ListView facendo doppioclick su esso dal pannello "Object and TimeLine" in modo tale che vi si evidenzi in giallo.
    A questo punto cliccate con il pulsante destro sul controllo nel form e scegliete la voce "BindItemSourceToData" dal menu contestuale.
    Premete sul pulsante "+ CLR" che trovate nella finestra che si è appena aperta e cliccate su "MyLinqToSQLDataContext" che dovreste avere nella lista (io avevo chiamato il file delle classi linq così: MyLinqToSQL.dmbl per cui il mio datacontext si chiama MyLinqToSQLDataContext)
    Premete su "OK" e il datacontext verrà aggiunto alle connessioni "Data Sources", cliccateci sopra e vi apparirà nella colonna di destra, l'elenco degli oggetti che implementano l'interfaccia IObservableCollection (e qui non sono proprio sicuro, quindi la butto là così come mi viene e prendetela con beneficio di inventario) tra cui la classe "Tipis (Array):(Table Tipi)"
    Selezionatela e premete Finish.
    Sembra che non sia cambiato niente ma in realtà abbiamo appena detto che il compilatore XAML deve creare un'istanza di Tipis perché la ListView la deve usare come DataSource ed abbiamo detto alla ListView di usare quell'istanza come DataSource per i suoi DataItem.
    passate dalla visualizzazione Design a quella XML, il Codice XAML ora è il seguente:

    <Window
        xmlns="
    http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="
    http://schemas.microsoft.com/winfx/2006/xaml"
        x:Class="Window1"
        Title="Window1" Height="300" Width="300" xmlns:d="
    http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:TestWPFLinqToSql="clr-namespace:TestWPFLinqToSql">
     <Window.Resources>
      <ObjectDataProvider x:Key="MyLinqToSQLDataContextDS" d:IsDataSource="True" ObjectType="{x:Type TestWPFLinqToSql:MyLinqToSQLDataContext}"/>
     </Window.Resources>
        <Grid>
         <ListView IsSynchronizedWithCurrentItem="True" Margin="0,0,0,40" ItemsSource="{Binding Path=Tipis, Mode=Default, Source={StaticResource MyLinqToSQLDataContextDS}}">
          <ListView.View>
           <GridView>
            <GridViewColumn Header="Codice"/>
            <GridViewColumn Header="Descrizione"/>
           </GridView>
          </ListView.View>
         </ListView>
        </Grid>
    </Window>

    Ora bisogna dire alle colonne quale valore prendere:
    Qui il mio consiglio è di farlo a mano:

            <GridViewColumn Header="Codice" DisplayMemberBinding="{Binding Path=TipoCodice}"/>
            <GridViewColumn Header="Descrizione" DisplayMemberBinding="{Binding Path=TipoDescrizione}"/>

    Purtroppo Expression Blend non ha intellisense e quello di VS si spegne proprio nel Binding per cui dovete sapere come si chiamano le colonne della tabella, le mie si chiamano TipoCodice e TipoDescrizione.
    ora compilate ed eseguite premendo F5. se avete messo dei valori di prova nella tabella dovreste vederli nella listview.
    Tutto questo ancora una volta senza scrivere nessuna riga di codice se non per effettuare il Binding alle colonne. spero che questa limitazione venga al piu presto sorpassata (io sto utilizzando VS2008 SP1 e Blend 2.5 March CTP).

    Con questo abbiamo chiuso la Lezione 2, arrivederci alla prossima lezione dove vedremo come permettere la modifica dei valori direttamente da listview.
    Vi lascio in allegato lo screenshot di quello che è venuto fuori.
  • 05-28-2008 4:58 PM In reply to

    Re: Tutorial WPF & LINQ - Lezione 2 - Accesso al database tramite LINQ

    Ciao Gabriele (non ho sbagliato il nome, vero? Stick out tongue)

    Questi tuoi post mi sembrano interessanti, ma come formato vedrei più "consono" un bell'articolo (o più di uno)...

    Che ne dici di "trasformarli" in modo da poterli pubblicare sul blog articoli? Nel caso avessi bisogno di aiuto per farlo sicuramente il buon Paolo ti potrebbe dare una mano Cool

     Ciao

    Fabrizio Bernabei   
    www.kitendo.com
    www.innovactive.it

  • 06-05-2008 7:49 PM In reply to

    • dardino
    • Top 10 Contributor
    • Joined on 05-19-2008
    • Perugia

    Re: Tutorial WPF & LINQ - Lezione 2 - Accesso al database tramite LINQ

    Fabrizio Bernabei:

    Ciao Gabriele (non ho sbagliato il nome, vero? Stick out tongue)

    Questi tuoi post mi sembrano interessanti, ma come formato vedrei più "consono" un bell'articolo (o più di uno)...

    Che ne dici di "trasformarli" in modo da poterli pubblicare sul blog articoli? Nel caso avessi bisogno di aiuto per farlo sicuramente il buon Paolo ti potrebbe dare una mano Cool

     Ciao

     

    Infatti non ho idea di come si faccia!!

    e se me lo spiegate, prima di pubblicare le altre lezioni trasformerei questi

    Grazie

  • 06-05-2008 11:39 PM In reply to

    Re: Tutorial WPF & LINQ - Lezione 2 - Accesso al database tramite LINQ

    Ciao,
    sto scrivendo un post in articoli per spiegare come si fa a pubblicare un articolo.
    E' molto semplice.

    Per qualsiasi domanda sai come trovarci.

    Ciao

Page 1 of 1 (6 items)
dotNet Umbria 2007-2008
Powered by Community Server (Commercial Edition), by Telligent Systems