mercoledì 30 settembre 2020

.Net utilizzo del database SqLite in Windows Application

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/microsoft-net-framework/art_net-utilizzo-del-database-sqlite-in-windows-application_1717.aspx

 

In questo articolo vedremo come utilizzare il database SqLite https://www.sqlite.org/index.html per la gestione dei dati come un normale database server.
L’utilizzo di questo database che risiede in una dll è quello di avere il vantaggio di non installare nessun software server come avviene per altri database, ma di avere in un file tutte le informazioni, permettendo in questo modo anche di realizzare semplici applicazioni, per di più Windows Application, che non richiedono ulteriori installazioni se non quelli del programma che si è realizzato.
In questo articolo, vedremo come tramite il linguaggio di programmazione C# ed in ambiente Windows Application utilizzando l’ultima versione del Framework 4.8 e l’ambiente di sviluppo Visual Studio 2019 community possiamo creare una semplice applicazioni.


Creazione del progetto
Prima di creare il progetto occorre installare sul proprio computer un componente gratuito di Visual Studio 2019 community per la gestione dei database SqLite, qui https://marketplace.visualstudio.com/items?itemName=ErikEJ.SQLServerCompactSQLiteToolbox il quale ci permette di amministrare tramite una barra il database SqLite.
Dopo averlo installato con tutti gli ambienti di sviluppo Visual Studio chiusi, e se l’installazione è andata a buon fine, apriamo il nostro ambiente di sviluppo.
Dopo aver selezionato il linguaggio di programmazione C#, selezioniamo come progetto App Windows Forms (.Net Framework) presente in Windows e desktop, a questo punto facciamo click sul pulsante “Avanti”.
Facciamo click sul pulsante “Avanti” e nella finestra che viene aperta impostiamo il nome del progetto.


Creazione del database

Appena aperta la form, iniziamo con il creare il database. Dalla voce di menu Strumenti, facciamo click sulla voce “SqLite/Sql Server Compatct Toolbox” (figura 1) in modo che viene aggiunta la possibilità di creare e gestire una fonte dati con questo database.

Figura 1 – La voce di menu per visualizzare la barra

Per saper se abbiamo installato Entity Framework per questo database, dobbiamo fare click sul pulsante informazioni e vedere se nella finestra che viene aperta (figura 2) viene visualizzato la voce.

 Figura 2 – La finestra delle informazioni per la gestione dei database

Se la finestra è come quella di sopra, non abbiamo installato correttamente il pacchetto di Sqlite.
Nel momento in cui scriviamo, il pacchetto da installare è il seguente “sqlite-netFx46-setup-bundle-x86-2015-1.0.112.0.exe (17.24 MiB)” dal titolo “Setups for 32-bit Windows (.NET Framework 4.6)” e nell’installazione dobbiamo indicare di installare nella GAC. Se invece l’installazione è andata a buon fine, avremo la barra degli strumenti come la seguente, con la voce SQlite EF6 DBprovider in GAC impostata a yes, come nella figura di seguito (figura 3).

 

 Figura 3 – La corretta installazione di entity framework


Nella barra che viene visualizzata, facciamo click con il tasto destro sopra alla voce “Data Connection” e nel menu che viene visualizzato selezioniamo la voce “Add SqLite connection…” (Figura 4).

Figura 4 – Il menu per la creazione dei database SqLite e Sql Server Compact

Nella finestra che viene aperta (figura 5) , ci permette di creare il database tramite il pulsante “Create”.

 Figura 5 – la creazione del database


Facciamo click sul pulsante “Create” ed assegniamo un nome al database, nel nostro caso è stato impostato “Dati”. Facciamo click sul pulsante “Close” e vedremo aggiornarsi la barra con il nome del database appena creato.
Nella cartella “Tables” facciamo click con il tasto destro e selezioniamo la voce “Build Table (beta)” in modo che visualizza una finestra (figura 4) con la quale possiamo creare una tabella.

Figura 6 – La creazione della tabella


Quando si apre la finestra, darà una riga con un valore predefinito, che è il campo chiave contatore.
Nella casella “Name” assegniamo un nome in questo caso abbiamo impostato il valore “Anagrafica” inoltre sono stati aggiunti due campi, che sono le tabelle, di tipo testo e lunghezza 10. Uno riguarda il nome e l’altro il cognome.
A questo punto facciamo click sul pulsante “Script!”  verrà visualizzata una finestra (figura 7) con lo script per la creazione della tabella.

 Figura 7 – Lo script per la generazione della tabella

Tramite il pulsante della freccia verde verso destra, andremo ad eseguire lo script e quindi generare la tabella.

Dopo aver eseguito lo script verrà creata la tabella come riportato in figura 8.

 

 Figura 8 – La tabella creata

Ora tramite Nuget aggiungiamo la possibilità di utilizzare la gestione dei dati tramite Entity Framework per Sqlite. Nella finestra Esplora soluzioni, facciamo click con il tasto destro sul nome del progetto e poi dal menu selezioniamo “Gestisci Pacchetti Nuget…” , nella finestra che viene aperta, inseriamo nella casella sotto la voce “Sfoglia” il valore “System.Data.SQLite.EF” che sarebbe il componente per la gestione del database SqLite tramite Entity Framework (figura 9).

Figura 9 -Il pacchetto per gestire SqlIte tramite Entity Framework

Si consiglia di installare il pacchetto tramite riga di comanda dalla console di Nuget, scrivendo la seguente istruzione.

Install-Package System.Data.SQLite


Dopo aver aggiunti al progetto, iniziamo ad aggiungere al nostro progetto il model di Entity Framework per il database SQlite che abbiamo appena creato con la relativa tabella.
Dalla finestra di esplora soluzione, facciamo click con il tasto destro sul nome del progetto e dal menu che viene visualizzato, selezioniamo la voce “Aggiungi” e poi “nuovo Elemento”, nella finestra che viene aperta, selezioniamo la categoria “Dati” e poi “Ado.Net Entity Data Model” assegniamo un nome se vogliamo e nella finestra successiva selezioniamo la voce “Entity Framework Designer da database”, in modo che crea il tutto partendo da un database.
Facciamo click sul pulsante avanti, e nella finestra che viene visualizza, impostiamo una connessione al database precedente creato, di norma dovrebbe già visualizzare tale connessione.
A questo punto procediamo facendo click sul pulsante “Avanti” in modo che si passa alla finestra per la selezione degli oggetti da database.
Può capitare in questo caso, di visualizzare un messaggio di errore, come quello qui di seguito.

 

Figura 10 - il messaggio di errore

In questo caso, occorre togliere i riferimenti delle dll “System.Data.SQLite”, “System.Data.SQLite.EF6”, “System.Data.SQLite.Linq” ed aggiungere quelle che abbiamo installato in precedenza con il pacchetto di installazione, che abbiamo scaricato dal seguente sito https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki .
I file potrebbero trovarsi nella cartella C:\Program Files (x86)\System.Data.SQLite\2015\bin
Compiliamo il progetto e ripetiamo i passi per aggiungere il modello di Entity Framework, che abbiamo illustrato poco fa.
Vedremo che questa volta sarà visibile la tabella, come riportato in figura 11.

 

Figura 11 – La selezione delle varie tabelle

Facciamo click sul pulsante “Fine” in modo da creare il modello di Entity Framework nel progetto con la tabella selezionata, compiliamo il tutto in modo che siamo sicuri  che non ci sono problemi.


Stesura del codice

Ora che abbiamo creata la parte architetturale del progetto, con il database, le tabelle e l’aggiunta di Entity Framework non ci resta da scrivere il codice per utilizzare nel nostro applicativo.
Facciamo doppio click sulla form, in modo da passare in modalità visualizzazione codice, ed in particolare nell’evento load della form.
In questo evento dovremmo scrivere il codice riguardante il caricamento dei dati, tramite linq to entity.
Qui di seguito un esempio di codice che effettua la selezione dei record nella tabella Anagrafica e visualizza a video tramite Messagebox il risultato.

C#

private void Form1_Load(object sender, EventArgs e)

        {

            mainEntities entita = new mainEntities();

            var risultato = (from Dati in entita.Anagrafica select Dati).ToList();

            foreach (var elementoTrovato in risultato)

            {

                MessageBox.Show("ID: " + elementoTrovato.Id + " Nome: " + elementoTrovato.Nome + " Cognome: " + elementoTrovato.Cognome);

            }

        }

Se viene eseguito il codice, può verificarsi un errore con i riferimenti di Entity Framework, visualizzando un messaggio di errore di tipo “System.NotSupportedException: 'Unable to determine the provider name for provider factory of type 'System.Data.SQLite.SQLiteFactory'. Make sure that the ADO.NET provider is installed or registered in the application config.'
“ come mostrato in figura 12

Figura 12 – L’eccezione che viene sollevata durante la select

Per risolvere questo problema, dobbiamo intervenire nel file app.config, in particolare “providers” dove andranno aggiunti altri tag e nella sezione “DbProviderFactories” .
Nel providers avremo un codice simile a questo:

 

<entityFramework>

    <providers>

      <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />

    </providers>

  </entityFramework>

Che diventa:

<entityFramework>

    <providers>

      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>

      <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />

      <provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6"/>

 

    </providers>

  </entityFramework>

Con l’aggiunta di due tag .
Mentre per “DbProviderFactories” avremo questo

<system.data>

    <DbProviderFactories>

      <remove invariant="System.Data.SQLite.EF6" />

      <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />

      <remove invariant="System.Data.SQLite" />

    </DbProviderFactories>

  </system.data>

Che diventa:

 

<system.data>

    <DbProviderFactories>

      <remove invariant="System.Data.SQLite.EF6"/>

      <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6"

        description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6"/>

      <remove invariant="System.Data.SQLite"/>

      <add name="SQLite Data Provider" invariant="System.Data.SQLite"

      description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>

    </DbProviderFactories>

 

  </system.data>

 

 

Con l’aggiunta di altri tag. Ora se compiliamo ed avviamo il tutto, il programma funzionerà.

Conclusioni


In questo articolo si è visto come utilizzare Entity Framework con il database SQlite, un database di piccole dimensioni che non richiede installazioni particolari di software e quindi facilità il deploy di applicazioni, questo perchè è tutto in una semplice dll.
Si è visto come anche durante lo sviluppo possono sorgere delle problematiche e quali le possibili soluzioni.
Un articolo introduttivo che permette di affrontare lo sviluppo di applicazioni gestionali con SQlite in maniera agevolata con le tante problematiche di compatibilità che si possono verificare.

martedì 29 settembre 2020

Asp.Net componente gratuito per esportare una pagina in file pdf

Dal seguente sito https://www.nuget.org/packages/Select.HtmlToPdf/ potete scaricare un componente gratuito per convertire una pagina web in un file pdf.

Il componente si applica sia a pagina web con tecnologia Asp.Net e sia Windows Application.

Tra le varie versione, quella Community è la gratuita.

Qui https://selectpdf.com/community-edition/ maggiori informazioni, mentre qui https://selectpdf.com/html-to-pdf/demo/ l'utilizzo.

Per maggiori informazioni visitate i siti indicati.

lunedì 28 settembre 2020

Visual Studio spostare con i tasti frammenti di codice

Se siete abituati ad utilizzare la tastiera, nell'ambiente di sviluppo Visual Studio (provato in 2017 e 2019) selezionando il frammento di codice interessato, tramite la combinazione dei tasti "ALT" + "freccia SU" si sposta il frammento selezionato nella parte superiore. Mentre tenendo sempre premuto il tasto "ALT" + "Freccia GIU'" si sposta nella parte inferiore il frammento di codice selezionato.
Che dirvi….buona programmazione.

domenica 27 settembre 2020

Download gratuito gioco Rocket League

Da qualche giorno è disponibile gratuitamente il download del gioco Rocket League, un videogioco di calcio con le macchine.

Il gioco, è per sistemi operativi Windows audio inglese e testo in vari lingue tra cui l'italiano.

Per maggiori informazioni e download visitate il seguente sito https://www.epicgames.com/store/it/product/rocket-league/home 

 

sabato 26 settembre 2020

Download gioco gratuito Heroes & Generals WWII

Un gioco di strategia, sparatutto e di guerriglia quello proposto da Epicgames in Heroes & Generals WWII.

Il gioco è in varie lingue ma non in italiano ed è per piattaforma Windows.

Per maggiori informazioni e download visitate il seguente sito https://www.epicgames.com/store/it/product/heroes-and-generals-wwii/home 

venerdì 25 settembre 2020

Download gratuito gioco RollerCoaster Tycoon 3 Complete Edition

Un gioco molto divertente e che appassiona tutta la famiglia, parliamo di RollerCoaster Tycoon 3, un gioco per grandi e piccoli con il quale costruire un luna-park.

Il gioco è in lingua inglese per l'audio e testo in italiano, ed è per piattaforma Windows, per maggiori informazioni e download visitate il seguente sito https://www.epicgames.com/store/it/product/rollercoaster-tycoon-3-complete-edition/home 

giovedì 24 settembre 2020

Datagridview evento seleziona riga SelectionChanged

 Quando si fa click sulla riga di un controllo Datagridview permettendo di selezionarla, viene sollevato l'evento SelectionChanged.

Qui di seguito un frammento di codice.

 private void DtgDati_SelectionChanged(object sender, EventArgs e)

        {

            if (Datagridview1.SelectedRows.Count > 0)

            {

                TxtCasella.Text = DtgDati.SelectedRows[0].Cells[1].Value.ToString();

               

            }

        }


La verifica di maggiore di 0 viene effettuato per evitare all'avvio della form l'eccezione all'apertura della form, dovuta alla mancanza dei dati.



mercoledì 23 settembre 2020

Download gratuito gioco Path of Exile

 



Un gioco gratuito di avventura quello proposto da Epicagames che offre la possibilità di scaricare per piattaforme Windows, parliamo di Path Of Exile.

Il gioco non è in lingua italiana.

Per maggiori informazioni e download visitate il seguente sito https://www.epicgames.com/store/it/product/path-of-exile/home 

martedì 22 settembre 2020

Tutorial creazione video giochi in maniera visiva CONSTRUCT 2

Dal seguente sito https://www.construct.net/en/tutorials/beginners-guide-to-construct-2-47 è possibile consultare un tutorial per la creazione dei videogiochi senza scrivere codice.

Il programma gratuito Contruct 2, permette la creazione di videogiochi per varie piattaforme in maniera visiva.

Il sito è in lingua inglese.

lunedì 21 settembre 2020

Spazio web gratuito supporto Asp.Net CORE

Se cercate uno spazio web gratuito che supporti Asp.Net, Asp.Net Core ed Asp.Net Core MVC, oltre a database quali Access e Microsoft Sql Server, questo sito https://somee.com/DOKA/DOC/DOProductDetails.aspx?docode=false&pid=100000000036 offre gratuitamente e senza limiti di tempo, un pacchetto con queste caratteristiche.

Un servizio interessante da poter utilizzare come test o per particolari siti.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

domenica 20 settembre 2020

Download gratuito gioco Watch Dogs 2

Un gioco per un pubblico adulto, maggiore, il famoso Watch Dogs 2, che fino al 24 settembre 2020 è possibile scaricare gratuite e senza limitazioni.

Il gioco in lingua italiana e per sistemi operativi Windows.

Per maggiori informazioni e download visitate il seguente sito https://www.epicgames.com/store/it/product/watch-dogs-2/home 

 

 

sabato 19 settembre 2020

Dowload gratuito gioco Stick it to the Man!


Fino al 24 settembre 2020 è possibile scaricare gratuitamente e senza limitazione il gioco di azione Stick it to the Man in lingua italiana e per sistema operativi Windows.

Per maggiori informazioni e download visitate il seguente sito https://www.epicgames.com/store/it/product/stick-it-to-the-man/home 

 

 

 

 

 

 

 

 

 

 

Strumento online per registrazione ciò che accade a video

Interessante il servizio gratuito online offerto dal sito RecordCast, visibile qui https://www.recordcast.com/ che offre la possibilità senza registrarsi e senza inserire indirizzo email, di effettuare delle registrazione di ciò che accade a video.
Dopo aver impostato le informazioni di registrazione, quali video e se mettere audio, tramite il pulsante di registrazione si avvia tutto ciò che accade sul monitor.
Al termine dell'attività di registrazione è possibile effettuare il download del video.
Sito in lingua inglese ma è facilmente utilizzabile.

venerdì 18 settembre 2020

Download gratuito Football Manager 2020


 

Un gioco che piace a tutti, soprattutto agli appassionati di calcio, sul sito Epicgames, fino al 24 settembre 2020 è possibile scaricare gratuitamente il gioco Football Manaager  Mate
Manager 2020.
Il gioco, in lingua italiana non ha limitazioni.
Per piattaforma Windows.
Per maggiori informazioni e download visitate il seguente sito https://www.epicgames.com/store/it/product/football-manager-2020/home

 

 

 

 

 

 

 

 

giovedì 17 settembre 2020

Phishing tramite sms




Si sposta anche tramite SMS il phishing, quella tecnica utilizzata da alcuni individui per fare soldi colpendo l'ignara persona.
Come da figura, gli sms sembrano a tutti gli effetti un messaggio serio, ma poi il link porterà ad un sito creato ad hoc che sembra di un grande brand internazionale al quale il malcapitato inserendo i dati e carta di credito nei vari campi si troverà truffato.
Facciamo sempre attenzione e non clicchiamo sui vari siti che arrivano tramite SMS.

mercoledì 16 settembre 2020

Vedere gratuitamente Netflix

Se volete vedere alcune serie TV gratuitamente e senza registrazione o senza dare email, NetFlix offre la possibilità di vederle gratuitamente dal seguente https://www.netflix.com/it/watch-free sito.

Le serie si possono vedere comodamente dal proprio pc, smartphone e TV Smart.

martedì 15 settembre 2020

Programmi per la sicurezza del computer

Interessante la pagina messa a disposizione dell'amico Ermanno con il quale riporta alcuni strumenti utili per la manutenzione del pc.
Software che possono tornare in varie occasioni.
Divisi per categoria, riporta link a programmi per proteggersi dai virus, testare vulnerabilità e tanto altro ancora.
Il sito è visibile qui https://www.devadmin.it/sicurezza-tools/

lunedì 14 settembre 2020

C# Utilizzare il database Sql Server Compact in progetti Windows forms

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/microsoft-net-framework/art_utilizzare-il-database-sql-server-compact-in-progetti-windows-forms_1716.aspx

In questo articolo vedremo come utilizzare nei propri progetti di tipo “Windows Application” il database Sql Server Compact, che permette di gestire quei scenari nel quale non è richiesto nessuna installazione di database server, ma solo l’installazione di un piccolo file.
Può tornare utile come gestire applicazioni di piccola entità e soprattutto con una mole di dati molto bassa, proprio perché il database non è stato pensato per scenari complessi al quale può ricoprire tale ruolo il database Sql Server Express o versione successiva. Inoltre vedremo come gestire i dati tramite Entity Framework su questo database. Il linguaggio di programmazione che verrà illustrato con i vari esempi di codice per la lettura, scrittura, modifica e cancellazione dei dati sarà tramite C#, visto che nel momento in cui stiamo scrivendo l’articolo il linguaggio di programmazione Visual Basic Net sembra che l’azienda Microsoft non intenda continuare le migliorie ed aggiornamenti, per questo motivo l’articolo si basa su C#.
Dobbiamo aver installato sul nostro pc, l’estensione di Visual Studio riguardante il database SQLite e Sql Server Compact, componete gratuito che si può scaricare dal markplace al seguente indirizzo https://marketplace.visualstudio.com/items?itemName=ErikEJ.SQLServerCompactSQLiteToolbox.

Creazione del database e della Wndows form


La prima operazione da fare è quella della creazione del database, in questo articolo avremo una tabella denominata “Anagrafica” con tre campi, id che è tipo contatore, un campo testo denominata “Nome” ed un campo denominato “Cognome” di tipo Testo. Dalla finestra per la gestione dei database Sql Server Compact e SQLite (figura 1) facciamo click tramite il tasto destro sulla voce “Data Connection” e selezioniamo la voce “Add Sql Server Compact 4.0 Connection…”




Figura 1 – La creazione del database

Nella finestra che viene visualizzata (figura 2) , dobbiamo fare click sul pulsante “Create..” dove verrà visualizzata una finestra di esplora computer, nel quale impostare il nome del database che verrà salvato. Possiamo impostare anche il percorso dove si trova il nostro progetto.


Figura 2 - la creazione del db con la connection string

Verrà creata anche la stringa di connessione al database. Facciamo click sul pulsante “Test Connection” per accertarci che la connessione funziona.
Confermiamo il tutto tramite il pulsante Ok, in modo che ci ritroviamo nella Toolbox il database creato, come mostrato in figura 3.





Figura 3 – Il menu per la creazione della tabella

Ora che verrà visualizzato il database, dovremmo creare la tabella per gestire i dati.
Sulla voce “Tables” facciamo click con il tasto destro e nel menu che viene visualizzato, selezioniamo la voce “Build Table (beta)…” la quale permetterà di aprire una finestra (figura 4) , dove già è visibile ed impostato un campo denominato “Id” di tipo “Intero” chiave e campo contatore. Si aggiungo due campi di tipo testo e precisamente “nvarchar” di lunghezza 50, denominato uno “Nome” ed un altro campo di tipo “nvarchar” di lunghezza 50 denominata “Cognome” come riportato qui di seguito.




Figura 4 – La creazione della tabella

A questo punto facciamo click sul pulsante “Script”, in questo modo verrà visualizzata una pagina con lo script SQL come riportato qui di seguito. Questo script ci permette di generare la tabella.


Figura 5 – Lo script per la creazione della tabella.

Clicchiamo sul pulsante di esecuzione, quello denominato “Execute” che si trova nella barra in alto a forma di rettangolo verde.
In questo modo verrà creata la tabella e sarà visualizzata nella barra di “Sql Server toolbox”.
Ora passiamo alla form, nel quale andremo a creare la nostra interfaccia grafica.
La form avrà il compito di visualizzare, inserire, modificare e cancellare i dati, quindi un approccio CRUD.
Utilizzeremo Entity Framework per l’accesso al database e la gestione dei dati.
Aggiungiamo alla form, un controllo datagridview, impostando la proprietà “Name” a DtgDati, e come proprietà “Dock” impostata in alto. Aggiungiamo 3 controlli label, uno contiene id del record selezionato, un altro l’intestazione della casella nome ed uno per l’intestazione della casella cognome.
Due controlli di tipo “Textbox” con la proprietà impostata una con “TxtNome” e l’altra con “TxtCognome”, infine aggiungiamo 3 pulsanti, che permettono inserimento, modifica e cancellazione, con la proprietà “Name” imposta in “BtnNuovo”, “BtnModifica” e “BtnElimina” il tutto come mostrato in figura 6.


Figura 6 – La form con i vari controlli.

Creazione di Entity Framework e stesura di codice

Vedremo in questa parte come utilizzare Entity Framework per la gestione dei dati, con operazioni di tipo CRUD, ossia lettura, inserimento, modifica e cancellazione dei dati.
Nella finestra di esplora soluzione, facciamo click con il testo destro del mouse sul nome del progetto nel menu che viene aperto, selezioniamo la voce “Aggiungi” e nel sotto menu “Nuovo Elemento”. Nella finestra che viene aperta, facciamo click sulla categoria “Dati” e tra i modelli proposti al centro selezioniamo quello recante la dicitura “Ado.Net Entity Data Model” impostando nel campo Nome situato in basso il valore “ModelDati” nella finestra che viene aperta (figura 7) selezionare la voce con il valore “Entity Framework Designer da Database” .



Figura 7 – La scelta del modello di Entity Framework.

Dopo averlo selezionato il modello in questione, facciamo click sul pulsante “Avanti”, verrà visualizzata la scelta del database (figura 8) che sarà impostato di default perché in precedenza abbiamo creato il database




Figura 8 – La connessione al database.

Lasciando il valore di default per il campo “impostazione di connessione in app.config” facciamo click sul pulsante “Avanti” con il quale ci viene visualizzata la versione di Entity Framework.
La versione come mostrato mostrato in figura 9 non si può cambiare, ma già la versione 5.0 offre molto per quello che dobbiamo fare.



Figura 9 – La scelta della versione di EF.

A questo punto, senza fare nessuna scelta, facciamo click sul pulsante “Avanti” nella finestra successiva (figura 10) verranno visualizzate le tabelle da selezionare, nel nostro caso avendola creata una sola, sarà visibile solo una. Selezioniamola in modo da aggiungerla al designer.



Figura 10 – La scelta delle tabelle

Dopo aver selezionato la tabella, facciamo click sul pulsante “Fine”.
In questo modo verrà visualizzata nel model di EF, la tabella, come riportato in figura 11.


Figura 11 – La tabella riportata nel model

Ora vediamo come tramite codice .Net possiamo effettuare le varie operazioni sui dati.
Passiamo in visualizzazione codice ed in qualsiasi parte della nostra classe, scriviamo il metodo che permette di selezionare i dati nella tabella e visualizzarli nella griglia e precisamente nel controllo Datagrid. Questa funzione sarà richiamata in varie fasi, o meglio metodi ed eventi.
Qui di seguito il codice riguardante la lettura dei dati.


C#

private void CaricaDati()

        {

            try

            {

                Entities entita = new Entities();

                var risultato = entita.Anagrafica.ToList();

                DtgDati.DataSource = risultato;

 

            }

            catch (Exception ex)

            {

 

                MessageBox.Show("Errore: " + ex.Message);

            }

 

 

        }





Ora passiamo in visualizzazione grafica, e facciamo doppio click sulla form, in questo modo si passa in visualizzazione codice nell’evento load della form.
In questo evento sarà chiamato il metodo appena creato.
Qui di seguito il codice dell’evento load.



C#

  private void Form1_Load(object sender, EventArgs e)

        {

            try

            {

                CaricaDati();

 

            }

            catch (Exception ex)

            {

 

                MessageBox.Show("Errore: " + ex.Message);

            }

        }



Ora passiamo in visualizzazione grafica nella nostra form. Iniziamo a scrivere il codice per i vari pulsante.
Facciamo doppio click sul pulsante “Inserisci” in modo che si passa in visualizzazione codice dell’evento click del pulsante.
Il codice è simile a quello utilizzato per il database Sql Server, si crea un oggetto della tabella anagrafica, si impostato i vari campi, e si aggiunge tramite il metodo “Add” all’entità della tabella, come avviene nel normale codice.
Qui di seguito il frammento di codice delle suddette operazioni.


C#

private void btnNuovo_Click(object sender, EventArgs e)

        {

            try

            {

                Anagrafica NuovaAnagrafica = new Anagrafica();

                NuovaAnagrafica.Nome = TxtNome.Text;

                NuovaAnagrafica.Cognome = TxtCognome.Text;

                Entities entita = new Entities();

                entita.Anagrafica.Add(NuovaAnagrafica);

                entita.SaveChanges();

                TxtNome.Text = "";

                TxtCognome.Text = "";

                CaricaDati();

            }

            catch (Exception ex)

            {

 

                MessageBox.Show("Errore: " + ex.Message);

            }

        }



A questo punto se proviamo ad eseguire il nostro applicativo e se abbiamo scritto bene il codice, permetterà di inserire nuovi record e visualizza nella griglia i dati inseriti.
Ora dobbiamo scrivere il codice che selezionata una riga del controllo datagridview, imposta in una label il codice id della riga selezionato.
Dopo aver selezionato il controllo DataGridView, facciamo doppio click sull’evento “SelectionChanged” e se la selezione dei record è maggiore di 0 impostiamo i vari valori nelle caselle di testo, qui di seguito il frammento di codice.


private void DtgDati_SelectionChanged(object sender, EventArgs e)

        {

 

            if (((DataGridView)sender).SelectedRows.Count > 0)

            {

                lblId.Text = ((DataGridView)sender).SelectedRows[0].Cells[0].Value.ToString();

                TxtNome.Text = ((DataGridView)sender).SelectedRows[0].Cells[1].Value.ToString();

                TxtCognome.Text = ((DataGridView)sender).SelectedRows[0].Cells[2].Value.ToString();

            }

               

        }



Ora ritorniamo alla visualizzazione grafica della nostra form e facciamo doppio click sul pulsante “Modifica” in modo da passare all’evento click del pulsante.
In questo modo dovremmo selezionare il record nel nostro database ed impostare i vari campi dell’oggetto trovato.
Il tutto come mostrato nel frammento di codice qui di seguito.


C#

private void BtnModifica_Click(object sender, EventArgs e)

        {

            try

            {

 

                Int32 recordSelezionato = Convert.ToInt32(lblId.Text);

                Entities entita = new Entities();

                var EntitaTrovata = (from dati in entita.Anagrafica where dati.Id == recordSelezionato select dati).FirstOrDefault();

                EntitaTrovata.Nome = TxtNome.Text;

                EntitaTrovata.Cognome = TxtCognome.Text;

 

               

                entita.SaveChanges();

                CaricaDati();

                lblId.Text = "";

                TxtCognome.Text = "";

                TxtNome.Text = "";

            }

            catch (Exception ex)

            {

                MessageBox.Show("Errore: " + ex.Message);

            }

        }



A questo punto non ci resta che testare il nostro codice, e selezionare un record e cambiare i dati.
Siamo giunti alla parte conclusiva della stesura del codice, quella relativa alla cancellazione dei record. Dopo aver selezionato il record tramite il codice “ID” ossia campo chiave, tramite il metodo “Remove” viene cancellato il record che avrà effetto con “SaveChanges” dell’entità.
Qui di seguito il frammento di codice delle suddette operazioni.



C#

private void BtnElimina_Click(object sender, EventArgs e)

        {

            if (MessageBox.Show("Vuoi eliminare il record selezionato? ", "Cancellazione", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes )

            {

                try

                {

                    Int32 recordSelezionato = (Int32)DtgDati.SelectedRows[0].Cells[0].Value;

                    Entities entita = new Entities();

                    var EntitaTrovata = (from dati in entita.Anagrafica where dati.Id == recordSelezionato select dati).FirstOrDefault();

                    entita.Anagrafica.Remove(EntitaTrovata);

                    entita.SaveChanges();

                    CaricaDati();

                }

                catch (Exception ex)

                {

                    MessageBox.Show("Errore: " + ex.Message);

                }

            

 

 

            }

        }



Conclusioni


L’articolo ha offerto una panoramica di come utilizzare Entity Framework con il database Sql Server Compact. Un database molto leggero e che non richiede installazione e configurazioni particolare di parte server.
Inoltre si è visto come Entity Framework può facilitare la stesura del codice nelle operazioni CRUD.