domenica 25 settembre 2022

file diff online differenza di testo

Se cercate un sito internet con il quale verificare la differenza tra due file di testo, il seguente sito https://www.diffchecker.com/diff in lingua inglese e facilmente utilizzabile, confronta due testi evidenziando le differenze.

sabato 24 settembre 2022

Ricevere email da Indirizzo di posta elettronica Gmail con punto

 

Come riportato anche nel sito assistenza di Gmail, nel caso che abbiamo un indirizzo email tutto attaccato tipo mariorossi@gmail.com,  è possibile che riceviamo delle email se viene inviata ad un indirizzo con il punto, tipo mario.rossi@gmail.com .

Questo, perchè il sistema Gmail non fa distinzione tra se nell'account c'è il punto oppure no. 


venerdì 23 settembre 2022

Download gioco Gloomhaven

 


Disponibile gratuitamente e senza limitazioni il gioco di combattimento Gloomhaven per sistemi operativi Windows.

Fino al 29 settembre 2022 il gioco si potrà scaricare gratuitamente dopo tale data il download sarà a pagamento.

Per maggiori informazioni e download visitate il seguente sito Gloomhaven | Acquistalo e scaricalo subito sull'Epic Games Store 

.Net componente gratuito per la creazione di video giochi wickedengine

 


Un componente gratuito per la creazione di video giochi, da utilizzare in Visual Studio nelle proprie applicazioni.

Il componente WickedEngine, è un engine, da utilizzare nelle proprie applicazioni.

Per maggiori informazioni e download visitate il seguente sito Wicked Engine Net – 3D Engine Development

giovedì 22 settembre 2022

download gioco ARK: Survival Evolved

 

Disponibile gratuitamente fino al 29 settembre 2022 il gioco di strategia ARK Survival Evolved con una grafica molto accattivante e valida giocabilità.

Il gioco è in lingua italiana e per sistemi operativi Windows.

Fino al 29 settembre 2022 il gioco si potrà scaricare gratuitamente dopo tale data il download sarà a pagamento, per maggiori informazioni e download visitate il seguente sito ARK: Survival Evolved | Acquistalo e scaricalo subito sull'Epic Games Store



C# codice sorgente gioco Word Puzzle Game

 

Interessante l'articolo e soprattutto il codice sorgente del gioco Word Puzzle scritto nel linguaggio di programmazione che si trova sul seguente sito https://www.codeproject.com/Articles/1136695/A-Complete-Word-Puzzle-Game-in-Csharp-NET 

Un gioco molto semplice nel quale trovare le frasi selezionando le varie parole nell'area gioco.

Il gioco è per ambiente "Windows Application" , ma con una grafica ben fatta.

Per il download occorre avere un account (registrazione) gratuito al sito, per maggiori informazioni e download del sorgente, visitate il seguente sito https://www.codeproject.com/Articles/1136695/A-Complete-Word-Puzzle-Game-in-Csharp-NET

mercoledì 21 settembre 2022

C# .Net 6 il metodo Take

Altra novità della nuova versione del Framework .Net 6, è quella del metodo "Take" con il quale possiamo passare alcuni valori per estrapolare una serie di dati.
Di seguito alcuni esempi.

Supponiamo di avere una lista di tipo string, con i seguenti nominativi:

 string[] valori = new string[] { "Luigi", "Emanuele", "Olga", "Francesca", "Gianni", "Aldo" };

Passando al metodo "Take" un valore e poi due volte punto ed un altro valore, mi estrapola tutti quelli che si trovano in quel range.

L'esempio di seguito, mi estrapola quei valori che vanno da tre a 5, quindi "Olga" "Francesca " e "Gianni"
var risultato = valori.Take(2..5);
MessageBox.Show($"Valori tra il 3 e 5:  {string.Join(",",  risultato.ToList())}");

Se invece vogliamo estrapolare gli ultimi due elementi, qui di seguito un frammento di codice che mi visualizza "Gianni" ed "Aldo".

var risultato2 = valori.Take(^2..);
MessageBox.Show($"Ultimi due: {string.Join(",", risultato2.ToList())}");

Lo stesso anche con il frammento di codice qui di seguito ma gli ultimi tre.

var risultato3 = valori.Take(3..);
MessageBox.Show($"Gli ultimi tre: {string.Join(",", risultato3.ToList())}");

martedì 20 settembre 2022

Immagini ed audio gratuiti

Il sito Openverse possiamo ricercare contenuti come immagini e file audio gratuiti da poter utilizzare nei propri programmi o altro.
In base al tipo di immagine è possibile inoltre sapere che tipo di licenza, anche per scopi commerciali.
Il sito è in lingua inglese, ma facilmente utilizzabile.

lunedì 19 settembre 2022

DataTable visualizzare i dati nel debug di Visual Studio 2022

 

Altra novità interessante di Visual Studio 2022 (Community è altra versione) 17.4 è quella di visualizzare in fase di debug una griglia con i dati in anteprima di un DataTable.

Dopo aver fermato il debug sull'oggetto di tipo DataTable, posizionando il mouse sopra verrà visualizzata una voce con scritto "Visualizza", tramite la freccia rivolta verso il basso selezioniamo la voce "DataTable visualizer"


Figura 1 - La voce visualizza

Figura 2 - La voce DataTable Visualizer


A questo punto verrà aperta una finestra contente i dati (figura 3) permettendo così di vedere in anteprima come verrà popolata la griglia.

Figura 3 - L'anteprima dei dati


Strumento online per creare vocali dal testo

Dal seguente sito https://www.texttovoice.online/ è possibile utilizzare uno strumento online gratuito per creare file audio, ed in particolar modo di tipo "mp3" digitando del testo nella casella.
Una volta digitato il testo e la lingua del testo,  è possibile ascoltarlo anche con voce femminile o maschile.
Tramite il pulsante "Download" si può scaricare il file audio del testo.

domenica 18 settembre 2022

C# sorgente codice scacchi

 

Un ottimo progetto completo del gioco degli Scacchi,  in .Net versione 6 con il linguaggio di programmazione C#, con possibilità di sfidare anche il computer.

Dal seguente sito https://www.codeproject.com/Articles/36112/Chess-Program-in-C è possibile scaricare il sorgente in C# del gioco degli scacchi.

Che dirvi...buona partita.

sabato 17 settembre 2022

Download gioco The Captain

 


Un gioco sparatutto spaziale per tutta la famiglia ma divertente allo stesso tempo,The Captain per sistemi operativi Windows, con il quale trascorrere ore piacevoli.

Fino al 22 settembre 2022 il gioco si potrà scaricare gratuitamente, dopo tale data il download sarà a pagamento, per maggiori informazioni e download visitate il seguente sito The Captain | Acquistalo e scaricalo subito sull'Epic Games Store

c# decimal format 2 digits

Se abbiamo un valore decimal, in una variabile o proprietà di tipo string, e che vogliamo solo due valori dopo la virgola, possiamo formattarli tramite il simbolo cancellato #.
Qui di seguito un esempio di come formattare il numero decimal di tipo "27,8674" in "27,87".

var risultato = Oggetto.Proprieta.ToString("0.##")

venerdì 16 settembre 2022

Download gioco Spirit of the North

 


Disponibile gratuitamente e senza limitazioni il gioco di avventura Spirit of the north in lingua inglese, per sistemi operativi Windows.

Fino al 22 settembre 2022 il download sarà gratuito, dopo tale data il download sarà a pagamento.

Per maggiori informazioni e download visitate il seguente sito Spirit of the North | Acquistalo e scaricalo subito sull'Epic Games Store

Programma gratuito per la creazione dei video giochi gbstudio

 


GbStudio GB Studio, è un programma gratuito che permette la creazione video giochi in maniera visiva.

Il programma si può utilizzare sul sistema operativo Windows, Mac e Liux.

Per maggiori informazioni, download e guida in linea, visualizzate il seguente sito https://www.gbstudio.dev/

giovedì 15 settembre 2022

Windows 11 registrazione ciò che viene fatto a video

 In Windows 11 è possibile registrazione ciò che viene fatto a video, tramite le funzionalità del sistema operativo stesso e senza utilizzare altri programmi.

Per registrazione ciò che avviene a video, si può utilizzare Xbox Game Bar, che permette di aprire una serie di strumenti per gioco, tra i quali le registrazioni.

Se dalla tastiera, teniamo premuto il simbolo di Windows (la bandiera) e poi il tasto "G", nella finestra che viene aperta, in alto a sinistra, si trova un pulsante tondo per registrazione ciò che avviene a video, in alternativa si può digitare tasto Windows (Bandiera) + ALT + R. 

A questo verrà avviata la registrazione, basterà rifare click sul pulsante di registrazione per fermarla.

Il video si troverà nella cartella "Video" e nella sotto cartella "acquisizioni".




mercoledì 14 settembre 2022

C# maui messagebox

In ambito MAUI, il Framework per la programmazione multipiattaforma, se vogliamo visualizzare un messaggio a video, tipo la Messagebox presente nei progetto di tipo "Windows Application", dobbiamo utilizzare il metodo "DisplayAlert", qui di seguito un frammento di codice.

DisplayAlert("Esempio", "Benvenuto nel mondo MAUI", "Chiudi");

Dove il primo parametro è il titolo del messaggio, il secondo parametro il testo (descrizione) ed il terzo parametro, il testo del pulsante per chiudere il messaggio.

martedì 13 settembre 2022

Leggere le fatture elettroniche online

Un valido strumento online per leggere le fatture elettroniche online, senza lasciare indirizzo email e senza registrazioni.
Il sito https://www.amministrazionicomunali.it/fatturexml/ in lingua italiana, fornisce la funzionalità di caricare il file firmato e non tramite il pulsante "scegli file", relativo alla fattura elettronica, e visualizzarne il contenuto.
Ottimo strumento per leggere le fatture elettroniche.


lunedì 12 settembre 2022

C# verificare se una stringa è di tipo decimal

Il frammento di codice qui di seguito, verifica se un valore di tipo testo è un decimal oppure no, inoltre se è uguale a 0, restituisce false.

public bool IsNumerico(string Valore)
        {
            decimal outValue;
            if (Decimal.TryParse(Valore, out outValue))
                if (outValue == 0)
                    return false;
                else
                    return true;
            else
                return false;
        }

Download Realm Royale Reforged Epic Launch Bundle

 


Disponibile gratuitamente fino al 15 settembre 2022, il componente per il gioco Realm Royale Reforged, dopo tale data, il download sarà a pagamento.

Per maggiori informazioni e download visitate il seguente sito Realm Royale Reforged Epic Launch Bundle - Epic Games Store 


Facebook come fare ad attivare o disattivare la pubblicazione anonima

 


In Facebook c'è la possibilità di pubblicare nei vari gruppi post in forma anonima, senza che venga visualizzato il nome della persona.

Per attivare o disattivare questa funzionalità, occorre andare in "Impostazioni" e poi fare click sulla voce "Impostazioni del gruppo " come mostrato in figura 2.


Figura 2 - La voce per aprire le impostazioni

Nella parte centrale si aprirà una serie di voci, andiamo nella categoria "Gestisci le discussioni" e poi fare click sulla penna nella voce "Pubblicazione Anonima" (figura 3), con il quale sarà possibile abilitare o disabilitare tale funzionalità.

Figura 3 - Il menu di pubblicazione anonima


domenica 11 settembre 2022

Download gioco Hundred Days - Simulatore vitivinicolo

 


Un bellissimo gioco per sistemi operativi Windows il gioco di simulazione vitivinicolo in lingua italiana in cui cimentarsi in questo ambito.

Il gioco offre una grafica molto accattivante e giocabilità.

Il gioco è disponibile gratuitamente fino al 15 settembre 2022 dopo tale data il download sarà a pagamento.

Per maggiori informazioni e download visitate il seguente sito Hundred Days - Simulatore vitivinicolo | Acquistalo e scaricalo subito sull'Epic Games Store

Sito su .Net

Il sito DotNetCoreTutorial, in lingua inglese fornisce interessanti articoli e frammenti di codice sulla programmazione .Net, con il linguaggio di programmazione C#, in ambito di .Net Core.
Il sito è costantemente aggiornato ed è visibile qui https://dotnetcoretutorials.com/ 

sabato 10 settembre 2022

Strumento online per la gestione dei file PDF gratuito

 



Ottimo strumento online quello proposto da https://boldpdftools.com/ che permette di effettuare gratuitamente e senza registrazione o email, vari operazioni sui file, quali la conversione, trasformazione di una pagina web in pdf, rimozione o aggiunta di password e tante altre operazioni.

Anche se il sito è in lingua inglese e facilmente utilizzabile.

venerdì 9 settembre 2022

Strumento online editing image

Se cercate uno strumento online per la modifica delle immagini, senza registrazione e senza email, il seguente sito https://www.online-image-editor.com/?language=italian in lingua italiana svolge egregiamente tale attività.
Il sito offre funzionalità per la modifica delle immagini, con effetti, testo ed altro, per poi scaricarle gratuitamente.
Per maggiori informazioni e download visitate il sito indicato.

giovedì 8 settembre 2022

Blog su .Net

Il seguente blog https://blog.ploeh.dk/ è molto aggiornato con interessanti articoli ed esempi di codice sulla programmazione .Net tramite il linguaggio di programmazione C#.

Download immagini Fluent Emoji gratuite

 


Dal seguente sito https://github.com/microsoft/fluentui-emoji nella cartella "assets" https://github.com/microsoft/fluentui-emoji/tree/main/assets è possibile scaricare gratuitamente migliaia di immagini di tipo Emoji, anche in 3D, da utilizzare nelle proprie applicazioni o su vostri programmi e web.

Per il download e maggiori informazioni visitate il sito indicato.

mercoledì 7 settembre 2022

Sito di notizie informatiche

Un sito in lingua inglese che molte notizie in ambito tecnologico.
Il sito https://betanews.com/ fornisce costantemente notizie sul mondo dell'informatica e tecnologia.

martedì 6 settembre 2022

Introduzione ad Entity Framework Core con .Net 6


In questo articolo vedremo come utilizzare l’ultima versione di .Net e precisamente la 6 in ambiente Windows Application con Entity Framework Core, il tutto tramite il linguaggio di programmazione C# e Visual Studio 2022 Community.
Entity Framework Core, a differenza della versione precedente, non permette la gestione grafica delle entità le quali permettono tramite classi di mappare le varie tabelle, a differenza delle versioni precedenti occorre scrivere il codice e non più tramite wizard che guida lo sviluppatore alla gestione dei dati.
Con il nuovo Entity Framework Core, è possibile gestire le varie basi dati, anche su altri sistemi che non sono Windows, come Ubuntu, Raspberry, Linux ed altri ancora.

Creazione del progetto

Si crea un nuovo progetto selezionando tra i vari progetti quelli di tipo “App Windows Forms”, fare click sul pulsante “Avanti” , inserire un nome a vostro piacimento e selezionare come versione del Framework la versione “.Net 6.0” .
Nella form aggiungiamo i seguenti controlli due controlli label, che saranno intestazione, due controlli di tipo casella di testo (textboxt) con la proprietà “Name” impostato una a “TxtNome” e l’altra a “TxtCognome”, tre pulsanti con la proprietà “Name” impostata una su “BtnInserisc” l’altro su “BtnModifica” e l’ultimo con il valore impostato con “BtnElimina”. Sempre per i pulsanti, impostiamo la proprietà “Text” con il valore “Inserisci", l’altro con “Modifica” ed infine l’ultimo con “Elimina”, la form dovrà avere l’aspetto simile a quello in figura 1.

Figura 1 – In controlli nella form

Terminata la creazione della form non resta che scrivere il codice per eseguire le varie operazioni.

Stesura del codice

Vedremo le operazioni di inserimento, lettura, modifica e cancellazione dati, che si usano per ogni database utilizzando il nuovo Entity Framework Core con database Litedb
La prima operazione da fare è quella di aggiungere il riferimento ad Entity Framework Core per lite db, tramite console di Nuget, digitiamo il seguente comando.

Install-Package Microsoft.EntityFrameworkCore.Sqlite


A questo punto verrà installato il pacchetto di Entity Framework Core per LiteDB.
In questo articolo faremo un basilare utilizzo, la gestione dei dati è molto semplice, le operazioni si faranno su una sola tabella con inserimento dei campi per le caselle di testo, di tipo nome e cognome.
Per tanto si deve creare un modello che rappresenti una tabella, che chiameremo Anagrafica, con tre colonne (proprietà) id che è il contatore e chiave, una proprietà di tipo string, che rappresenta il nome, ed una proprietà di tipo “string” che rappresenta il cognome.

Si crea una classe denominata “DatiContext” nella quale saranno presenti le classi che mapperanno le tabelle (in questo caso solo una, quella di Anagrafica) ed il collegamento ed altre operazioni per la gestione del database.
Qui di seguito si riporta la classe “DatiContext” che vedremo inseguito con la gestione del database e la classe “Anagrafica”



C#

public class DatiContext 

    {

    }


Dopo aver creato la classe occorre aggiungere il riferimento allo spazio dei nomi “Entity Framework Core”, sopra ad ogni dichiarazione inserire lo spazio dei nomi, di seguito il frammento di codice di tale dichiarazione.

C#

using Microsoft.EntityFrameworkCore;


Ora la casse creata in precedenza, quella del contesto denominata "DatiContext" eredita da DbContext, come riportato qui di seguito.

C#

public class DatiContext : DbContext

    {

        

    }

Aggiungiamo all’interno dello spazio dei nomi, la definizione della classe Anagrafica, che farà da mapping con la tabella nel database.
Si crea una classe con tre proprietà, come accennato in precedenza.
Di seguito il frammento di codice delle suddette operazioni.

C#

public class Anagrafica

    {

      

        public int Id { get; set; }

        public string Nome { get; set; }

 

        public string Cognome { get; set; }

 

 

    }

 Nella classe creata in precedenza per la gestione del collegamento del database, che abbiamo creato con il nome “DatiContext” e che eredita da “DbContext”, dobbiamo creare una proprietà pubblica con il quale fornisce il percorso in cui verrà salvato il database, il percorso del database viene impostato nel costruttore, mentre l’override dell’evento “OnConfiguring” ci permette di impostare il percorso del database con la proprietà pubblica.

Una proprietà che rappresenta la classe Anagrafica, che è a tutti gli effetti la gestione della tabella.


La proprietà pubblica del percorso è per far comprendere al lettore che la classe per la gestione del database, il context lo possiamo personalizzare a nostro piacimento.


Di seguito si riporta le suddette operazioni.


C#

public class DatiContext : DbContext

    {

        public DbSet<Anagrafica> Anagrafiche { get; set; }

        public string PercorsoDB { get; }

 

        public DatiContext()

         {

 

            var Cartella = Environment.CurrentDirectory;

            PercorsoDB = System.IO.Path.Join(Cartella, "Dati.db");

 

        }

 

        protected override void OnConfiguring(DbContextOptionsBuilder options)

       => options.UseSqlite($"Data Source={PercorsoDB}");

    }


Per fornire chiarezza su quanto illustrato in questo momento, si riporta il codice completo di tutto il file.

C#

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using Microsoft.EntityFrameworkCore;

namespace WinEfCoreArt

{

    public class DatiContext : DbContext

    {

   public DbSet<Anagrafica> Anagrafiche { get; set; }

 

        public string PercorsoDB { get; }

 

        public DatiContext()

         {

 

            var Cartella = Environment.CurrentDirectory;

            PercorsoDB = System.IO.Path.Join(Cartella, "Dati.db");

 

        }

 

        protected override void OnConfiguring(DbContextOptionsBuilder options)

       => options.UseSqlite($"Data Source={PercorsoDB}");

    }

 

    public class Anagrafica

    {

      

        public int Id { get; set; }

        public string Nome { get; set; }

 

        public string Cognome { get; set; }

 

 

    }

}



La gestione dei dati è terminata, non resta che creare la tabella ed il database, questo lo facciamo tramite riga di comanda nella console di “Nuget”.
Il primo comando da eseguire nella console è quello di installare alcuni strumenti, scriviamo il seguente comando e diamo invio. 


Install-Package Microsoft.EntityFrameworkCore.Tools


Al termine dell’installazione dovremmo avere esito positivo.
Dobbiamo eseguire il comando che crea una classe che permette di gestire le informazioni per poter creare la tabella ed il database.
Il comando per la creazione della classe da eseguire in console “Nuget” è il seguente.

Add-Migration InitialCreate

Ora non resta che eseguire il comando per creare il database (o aggiornare nel caso esiste) con la creazione o modifica della tabella, in base alla classe che abbiamo creato in precedenza dal nome “Anagrafica” che rappresenta la tabella.

Update-Database

Nella finestra “Esplora soluzione” vedremo che è stata creata una cartella dal nome “Migrations” contenente i file il tutto come mostrato in figura 2.

Figura 2 – Le classi per la creazione delle tabelle e database

Ora non resta che scrivere il codice per le operazioni sul database, torniamo nella form, ed in visualizzazione codice, scriviamo una funzione per il caricamento dei dati.
La funzione verrà richiamata da ogni pulsante nell’evento load della form.
Il caricamento dei dati avviene leggendo tutti i record della tabella anagrafica, qui di seguito il frammento di codice della funzione del caricamento dei dati.


C#

private void CaricaDati()

        {

            var Contesto = new DatiContext();

            var Anagrafica = Contesto.Anagrafiche

                  .OrderBy(p => p.Id).ToList();

 

 

            DtgDati.DataSource = Anagrafica;

 

        }


Questa funzione sarà eseguita nell’evento load della form, qui di seguito il frammento di codice delle suddette operazioni.

C#

  private void Form1_Load(object sender, EventArgs e)

        {

            CaricaDati();

        }


Passiamo in visualizzazione grafica e facciamo doppio click sul pulsante denominato inserisci, in questo modo passiamo in visualizzazione codice nell’evento click.
In questo evento dovremmo scrivere il codice per l’inserimento dei dati, che sono inseriti nelle caselle di testo.
L’inserimento avviene utilizzando il metodo "Add" della classe contesto ed aggiungendo il rifermento alla classe “Anagrafica” passando alle proprietà “Nome” e “Cognome” i valori presenti nelle caselle di testo.
Tramite il metodo “SaveChanges” vengono salvati i dati.
Di seguito il frammento di codice delle suddette operazioni per l’evento click del pulsante “Inserisci”.

C#

private void BtnInserisci_Click(object sender, EventArgs e)

        {

            var dbContext = new DatiContext();

            dbContext.Add(new Anagrafica { Nome = TxtNome.Text, Cognome = TxtCognome.Text });

            dbContext.SaveChanges();

            CaricaDati();

        }


Ora passiamo in visualizzazione grafica e facciamo doppio click sul pulsante denominato “Modifica” in questo modo passiamo in visualizzazione codice dell’evento click del pulsante.
Il codice in questo caso è molto semplice, verifica se è stata selezionata una riga nella griglia, si prende l’identificativo che è la prima colonna, effettua una select per ottenere il record, valorizza le due proprietà con i valori nelle caselle di testo e poi effettua tramite il metodo “Update” l’aggiornamento, che sarà convalidato con il metodo “SaveChanges” del contesto.
Di seguito si riporta il frammento di codice delle suddette operazioni.

C#

private void BtnModifica_Click(object sender, EventArgs e)

        {

            if (DtgDati.SelectedRows.Count < 1)

            {

                MessageBox.Show("Selezionare un record");

                return;

            }

            var dbContext = new DatiContext();

            var Anagrafica = dbContext.Anagrafiche.Where(p => p.Id == (int)DtgDati.SelectedCells[0].Value).FirstOrDefault();

            Anagrafica.Nome = TxtNome.Text;

            Anagrafica.Cognome = TxtCognome.Text;

            dbContext.Update(Anagrafica);

            dbContext.SaveChanges();

            CaricaDati();

        }

Ora passiamo in visualizzazione grafica, e facciamo click sul pulsante “Elimina”, in modo visualizzare la modalità codice dell’evento click del pulsante.
Anche in questo caso, tramite il metodo “Remove” dell’oggetto del contesto, eliminiamo l’entità individuato tramite una ricerca per il campo chiave ID. Ottenuto il singolo elemento, viene passato al metodo “Remove” e tramite il metodo “SaveChanges” si conferma la cancellazione del dato.
Di seguito si riporta il frammento di codice delle suddette operazioni.


C#

private void BtnElimina_Click(object sender, EventArgs e)

        {

            if (DtgDati.SelectedRows.Count < 1)

            {

                MessageBox.Show("Selezionare un record");

                return;

            }

            var dbContext = new DatiContext();

            var Anagrafica = dbContext.Anagrafiche.Where(p => p.Id == (int)DtgDati.SelectedCells[0].Value).FirstOrDefault();

            dbContext.Remove(Anagrafica);

            dbContext.SaveChanges();

            CaricaDati();

        }





Conclusioni

Ora non resta che eseguire la nostra applicazione e verificare il corretto funzionamento del codice, tenendo conto che il database si deve trovare nella stessa cartella in cui viene eseguito l’applicativo.
L’articolo ha voluto fornire una panoramica introduttiva al lettore per muoversi in maniera autonoma nella nuova versione di Entity Framework Core e del Framework .Net 6.

In questa nuova versione di Entity Framework, l'assenza della creazione delle entità in maniera grafica, rende lo sviluppo diverso ma permette allo sviluppatore di avere più controllo e visione del codice.

L'aspetto più importante sta nel fatto di utilizzarlo su più sistemi operativi e su diversi database, aspetto molto importante visto l'attuale scenario di multi piattaforma.

lunedì 5 settembre 2022

C# utilizzo del database LiteDB con .Net 6

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/microsoft-net-framework/art_csharp-utilizzo-del-database-litedb-con-dotnet-6_1802.aspx



In questo articolo vedremo come utilizzare il database LiteDB https://www.litedb.org/ con la tecnologia .Net 6 ed il linguaggio di programmazione C# tramite l’ambiente di sviluppo Visual Studio 2022.
L’articolo vuole fornisce una panoramica sulle operazioni più comuni che si fanno su un database, quali operazioni di Inserimento, modifica, lettura e cancellazione dei dati, detto CRUD.
Il database LiteDB è una dll molto leggera che permette di dotare le proprie applicazione di una gestione dei dati in forma multi piattaforma e senza installare drive o altri programmi per la relativa gestione.

Creazione del progetto

Si crea un nuovo progetto di tipo “App Windows Forms” impostando un nome di proprio piacimento e selezionando la versione del Framework a 6.
Dopo ave creato il progetto, inserire nella forma un controllo di tipo “DatagrdiView” impostando la proprietà “Name” in “DtgDati” due controlli di tipo “Label” per l’intestazione delle caselle di testo, due controlli di tipo “Caselle di testo” con la proprietà “Name” impostata in una a “TxtNome” e l’altra in “TxtCognome”, ed infine i tre pulsanti per la gestione di inserimento, modifica e cancellazione dei dati,  il tutto come mostrato in figura 1.


Figura 1 – l’interfaccia grafica per la gestione dei dati

Stesura del codice

Dopo aver impostato i vari controlli per la gestione dei dati, non resta che aggiungere al progetto le classi ed i riferimenti al database di tipo “LiteDB”.
Dalla casella di nuget per l’esecuzione da riga di comandi, scriviamo le istruzioni per aggiungere le classi per la gestione del database.
Eseguire il comando qui di seguito per aggiungere i riferimenti a “LiteDB”.

Install-Package LiteDB


Dopo aver impostato lo spazio dei nomi per la gestione di LiteDB, occorre scrivere il codice.
Facciamo doppio click sulla form, in modo da passare in visualizzazione codice nell’evento load della form.
In alto sopra ad ogni dichiarazione, aggiungiamo lo spazio dei nomi per gestire le varie classi.
Qui di seguito la dichiarazione dello spazio dei nomi per “LiteDB”.

using LiteDB;

Dopo aver aggiunto il riferimento alle classi per la gestione del database, dobbiamo scrivere il codice per eseguire le varie operazioni CRUD.
Prendendo come esempio il modello di Entity Framework, anche in questo caso le tabelle saranno mappate nelle varie classi.
Supponiamo che vogliamo gestire i dati anagrafici di una persona, quale Id contatore, Nome e cognome, queste proprietà saranno le colonne della tabella al quale sarà assegnato il nome della classe.
Di seguito si riporta il frammento di codice della classe per la gestione dei dati, da inserire fuori della classe “form” ma sempre nello spazio dei nomi.



C#

public class Angrafica

    {

        public Int32 Id { get; set; }

        public string Nome { get; set; }

        public string Cognome { get; set; }

        

    }



Si crea adesso una funzione che sarà richiamata dai vari pulsanti ed eventi,  che permette il caricamento dati nella griglia. La funzione sarà richiamata nell’evento load della form, e negli eventi click di ogni singolo pulsante.
La gestione dei dati avviene tramite un oggetto di tipo “LiteDatabase” che passando il percorso e nome del database lo crea oppure lo inizializza qualora è già presente. Tramite il metodo GetCollection, passando il nome della classe, mappiamo le informazioni tra la classe e la tabella che verrà creata qualora non esista.
Tramite il metodo Query, viene effettuata una selezione dei dati corrispondente al comando SQL di tipo “Select * From NomeTabella”, mentre con il metodo “ToList()” viene restituita la lista dei dati.
Qui di seguito si riporta il frammento di codice delle suddette operazioni.

C#

private void CaricaDati()

        {

            try

            {

                

                using (var db = new LiteDatabase(@"C:\Varie\Dati.db"))

                {

                    //Apre il db e se non esiste lo crea - Carica tutti i dati di tipo Anagrafica

                    var Dati = db.GetCollection<Angrafica>("Angrafica");

                    //Carica i dati nel controllo DataGrid, tramite il metodo Query effettu

                    DtgDati.DataSource = Dati.Query().ToList();

                    

                }

                TxtCognome.Text = "";

                TxtNome.Text = "";

            }

            catch (LiteException ex)

            {

                MessageBox.Show(ex.Message);

               

            }

 

 

        }


Torniamo in visualizzazione grafica ed eseguiamo l’applicazione per vedere se funziona.
Verificato il corretto funzionamento, non resta che scrivere il codice per l’inserimento dei dati.
Facciamo doppio click sul pulsante con il testo “Inserisci” in modo da passare in visualizzazione codice nell’evento click.
Anche in questo caso, bisogna come sempre effettuare un collegamento al database, ed avviene tramite la classe “LiteDatabase”, una volta effettuata la connessione si crea un oggetto di tipo “Anagrafica” che è la classe che mappa la tabella presente nel database, e valorizziamo i campi (nome, e cognome), a questo punto, tramite il metodo “Insert” dell’oggetto di tipo “IliteConnection” che è un insieme di oggetti della classe “Anagrafica” verrà effettuato l’inserimento del record.
Qui di seguito si riporta il frammento di codice delle suddette operazioni, per l’evento click del pulsante “Inserisci”.


C#

  private void BtnInserisci_Click(object sender, EventArgs e)

        {

            using (var db = new LiteDatabase(@"C:\Varie\Dati.db"))

            {

                //creo oggetto per l'inserimento dati

                var NuovoRecord = db.GetCollection<Angrafica>("Angrafica");

                //Valorizzo con i dati

                var utente = new Angrafica

                {

                    Cognome = TxtCognome.Text,

                    Nome = TxtNome.Text

                };

 

                //Inserisco

                NuovoRecord.Insert(utente);

              

 

            }

            CaricaDati();

            return;

        }


Ora non resta che eseguire la nostra applicazione, inserire dei dati nelle caselle di testo, e fare click sul pulsante “Inserisci”, dovremmo vedere di volta in volta l’inserimento dei dati nel controllo Griglia.
Passiamo in visualizzazione grafica, e facciamo doppio click sul pulsante “Aggiorna” in modo che passiamo in visualizzazione codice nell’evento click del pulsante.
La modifica dei dati, avviene selezionando il record interessato, ed impostato le proprietà dell’oggetto (classe Anagrafica) che rappresenta la tabella nel database.

Dopo aver effettuato la connessione alla fonte dati, tramite la classe “LiteDatabase”, si crea un oggetto di tipo “IliteCollection” , che rappresenta i record presenti nella tabella e tramite il metodo “Query” si effettua una ricerca dei dati, filtrando per il campo “Id”, tramite Where.
Una volta ottenuto il record, si modificano le proprietà “Nome” e “Cognome”, e tramite il metodo “update” dell’oggetto di tipo “ILiteCollection”, si aggiornano i dati.
Di seguito il frammento di codice delle suddette operazioni.

C#

  private void BtnAggiorna_Click(object sender, EventArgs e)

        {

            try

            {

                if (DtgDati.SelectedRows.Count < 1)

                {

                    MessageBox.Show("Selezionare almeno un record");

                    return;

                }

                Int32 idRecord = Convert.ToInt32(DtgDati.SelectedRows[0].Cells[0].Value);

                using (var db = new LiteDatabase(@"C:\Varie\Dati.db"))

                {

                    //creo oggetto per aggiornamento dati

                    var Dati = db.GetCollection<Angrafica>("Angrafica");

                    var recordDaAggiornare = Dati.Query().Where(p=>p.Id == idRecord).FirstOrDefault();

                    if (recordDaAggiornare != null)

                    {

                        //Valorizzo con i dati

                        recordDaAggiornare.Nome = TxtNome.Text;

                        recordDaAggiornare.Cognome = TxtCognome.Text;

                        //aggiorno

                        Dati.Update(recordDaAggiornare);

                    }

                   

 

 

                }

                CaricaDati();

            }

            catch (LiteException ex)

            {

                MessageBox.Show(ex.Message);

 

            }

        }



Ora non resta che seguire il programma, e nella casella nome e cognome, inseriamo dei valori e dopo aver selezionato una riga nella griglia, facciamo click sul pulsante “Aggiorna”, vedremo la griglia aggiornarsi con i nuovi dati.

Siamo giunti all’ultimo esempio di codice, quello relativo alla cancellazione dei dati, in particolare per cancellare un record di una determinata tabella dobbiamo utilizzare il metodo “Delete” dell’oggetto di tipo “ILiteCollection” lo stesso che abbiamo utilizzato nel precedente frammento di codice, quello relativo all’aggiornamento dei dati, passando come parametro il valore del campo chiave (in questo caso ID).
In particolare dopo aver effettuato la connessione alla fonte dati tramite “LiteDatabase”, si crea un oggetto di tipo “IliteCollection” tramite il metodo “GetCollection, e tramite il metodo “Delete” si passa il valore della colonna del campo chiave.
Se invece vogliamo eliminare tutti i record della tabella, possiamo utilizzare il metodo “DeleteAll” anziché il metodo “Delete” che svuota la tabella di tutti i dati.
Di seguito il frammento di codice delle suddette operazioni da inserire nell’evento click del pulsante “Elimina”.

C#

private void BtnElimina_Click(object sender, EventArgs e)

        {

            try

            {

                if (DtgDati.SelectedRows.Count < 1)

                {

                    MessageBox.Show("Selezionare almeno un record");

                    return;

                }

                Int32 idRecord = Convert.ToInt32(DtgDati.SelectedRows[0].Cells[0].Value);

 

                using (var db = new LiteDatabase(@"C:\Varie\Dati.db"))

                {

                    //Apre il db e se non esiste lo crea

                    var Dati = db.GetCollection<Angrafica>("Angrafica");

                     

                    bool risultato = Dati.Delete(idRecord);

 

 

                }

                CaricaDati();

            }

            catch (LiteException ex)

            {

                MessageBox.Show(ex.Message);

 

            }

 

        }




Ora non resta che eseguire il programma, e dopo aver selezionato una riga nella griglia, facciamo click sul pulsante “Elimina”, vedremo che il record non sarà più presente.

Conclusioni

L’articolo ha voluto fornire al lettore una panoramica ed introduzione sull’utilizzo di questo particolare database di dimensioni molto ridotte e di portabilità molto interessanti per applicazioni su multi piattaforma, fornendo al lettore le operazioni più comuni sulla gestione dei dati.
Per chi sviluppa con la metodologia Entity Framework non troverà difficoltà ad usare quel tipo di approccio nello sviluppare applicazioni.
Il codice dell’articolo si può utilizzare anche per altre tipologie di progetti, come in ambito  web.
L’articolo è dedicato all’amico Pasquale che mi ha fatto conoscere questo database e che il suo entusiasmo per le tecnologie mi coinvolge sempre più, un ragazzo dalla grande passione per le tecnologie e video giochi.