domenica 16 novembre 2025

Strumento online per la modifica delle immagini toolhub

 

strumento online per la modifica delle immagini

Un valido strumento online per la gestione delle immagini, in particolare per applicare effetti o modifiche a delle immagini.

Il sito ToolHub, visibile qui https://toolhub.club/it/images tra le varie funzionalità, fornisce la possibilità di applicare effetti o modificare alle immagini. Il servizio in lingua italiana è gratuito e non richiede ne indirizzo email e ne registrazione.


download gioco Blue Protocol: Star Resonance

 

blue-protocol-star-resonance

Un gioco molto ben curato nella grafica ma soprattutto della sua giocabilità, parliamo del gioco di avventura Blue Protocol: Star Resonance, per sistemi operativi Windows .

Il gioco adatto a ragazzi ed adulti, è un video gioco molto ben fatto.

Per maggiori informazioni e download visitate il seguente sito https://store.epicgames.com/it/p/blue-protocol-star-resonance-27bff9

Download gratuito ScourgeBringer

 

scourgebringer gioco

Disponibile gratuitamente e senza limitazioni, il gioco di azione ScourgeBirnger, in lingua italiana per sistemi operativi Windows e Mac.

Il gioco, per ragazzi ed adulti, offre una grafica molto interessante, ed una valida giocabilità.

Fino al 20 novembre 2025, sarà possibile scaricarlo gratuitamente, dopo tale data, il download sarà a pagamento.

Per maggiori informazioni e download visitate il seguente sito https://store.epicgames.com/it/p/scourgebringer

sabato 15 novembre 2025

Avviare Esplora file come amministratore del computer in Windows 11

esplora file modalità amministratore



Nel caso che abbiamo l'esigenza di avviare il programma per la gestione dei file e cartella, denominata "Esplora File" in Microsoft Windows 11, tramite la seguente procedura è possibile aprirlo in tale modalità.
Dalla casella cerca quella vicino all'icone della bandierina,  digitiamo il testo "explorer.exe", il tutto come mostrato nella figura precedente .
Nella parte destra verrà visualizzata la voce "Esegui come amministratore", a questo punto, sarà possibile avviarlo in tale modalità.

Download gioco gratuito Where Winds Meet

 


Un bellissimo gioco di avventura gratuito per tutti gli appassionativi del gaming.

Parliamo di Where Winds Meet, disponibile per sistemi operativi Windows, e senza limitazioni.

Il gioco, adatto a ragazzi ed adulti, offre una grafica molto ben curata e giocabilità molto ben fatta.

Per maggiori informazioni e download, visitate il seguente sito https://store.epicgames.com/it/p/where-winds-meet-58a176

venerdì 14 novembre 2025

Evento gratuito .NET Conf 2025 - Le Novità di .NET 10

Un bellissimo evento a Genova quello proposto dalla community DotNetLiguria, che in occasione del nuovo rilascio del Framework .Net 10, ha organizzato un evento gratuito ed aperto a tutti, riguardante le novità di questa nuova versione.
L'evento, della durata di una giornata, vuole illustrare ai presenti le potenzialità offerte dal nuovo Framework.
Qui https://dotnetliguria.net/Workshops/Detail?WorkshopId=168f890d-1d05-4d95-9b2e-47d3f25634a9 è possibile consultare il dettaglio dell'evento, il luogo dove si svolgerà l'iniziativa ed il modulo per registrarsi gratuitamente all'evento.

Download ChronosWorlds

 

download gioco ChronosWorlds

Un bel gioco gratuito di avventura, quello disponibile gratuitamente per sistemi operativi Windows, adatto a bambini, ragazzi ed adulti.

Parliamo del video gioco ChronosWorlds, in lingua inglese, che offre una giocabilità molto ben fatta e grafica curata.

Per maggiori informazioni e download visitate il seguente sito https://store.epicgames.com/it/p/chronosworlds-b69248

Evento gratuito The Agentic Day

La community AspItalia, ha organizzato un evento gratuito ed aperto a tutti, nel quale verranno illustrate gli aspetti per l'utilizzo e creazione di agenti di intelligenza artificiale.

Un tema di grande attualità e che vede sempre più interesse.
L'evento si terrà di persona a Milano, con tante sessioni per una giornata formativa.
Per consultare l'agenda e maggiori informazioni, visitate il seguente sito https://www.aspitalia.com/eventi/98/The-Agentic-Day-Milano.aspx nel quale è presente il modulo per iscriversi gratuitamente all'evento.
 

download Songs of Silence

gioco Songs of Silence

 

Un gioco di strategia e guerra, molto ben fatto e con una valida giocabilità.

Fino al 20 novembre 2025, è possibile scaricare gratuitamente senza limitazioni, il gioco Songs Of Silence, in lingua italiana e per sistemi operativi Windows, dopo tale data, il gioco sarà a pagamento,.

Per maggiori informazioni e download visitate il seguente sito https://store.epicgames.com/it/p/songs-of-silence-778d86 

mercoledì 12 novembre 2025

Download gioco Game of Thrones: Kingsroad

 

Game of Thrones: Kingsroad

Un gioco molto bello e con una grafica molto curata, parliamo del gioco di avventura Game Of Thrones Kingsroad, disponibile gratuitamente per sistemi operativi Windows.

Il gioco, per ragazzi ed adulti, offre una buona giocabilità.

Per maggiori informazioni e download, visitate il seguente sito https://store.epicgames.com/it/p/game-of-thrones-kingsroad-e19c7c

martedì 11 novembre 2025

Download gioco Oman Physics 12

 

gioco oman physics 12

Disponibile gratuitamente e senza limitazioni il gioco di simulazione Oman Physics 12, per la gestione del voltaggio elettrico.

Il video gioco è per sistemi operativi Windows.

Per maggiori informazioni e download visitate il seguente sito https://store.epicgames.com/it/p/oman-physics-12-12f0d7

Rilasciato il nuovo ambiente di sviluppo Visual Studio 2026 ed il nuovo Framework .Net 10

Un grande giorno oggi per molti sviluppatori su tecnologia .,Net, come riportato in questo post  https://devblogs.microsoft.com/visualstudio/visual-studio-2026-is-here-faster-smarter-and-a-hit-with-early-adopters/ in occasione della .Net Conference è stata rilasciata la nuova versione di Visual Studio 2026 .
Il nuovo ambiente di sviluppo, offre elevate prestazioni, ma anche tante e significative funzionalità.
Oltre al rilascio del nuovo ambiente di sviluppo, anche quella della nuova versione del Framework .Net 10, come riportato qui https://devblogs.microsoft.com/dotnet/announcing-dotnet-10/

Download programma gratuito per la modifica dei file pdf FreePDF

 

software gratuito pdf

Un ottimo programma gratuito, in lingua italiana per la modifica e gestione dei file pdf.

Parliamo di FreePdf, scaricabile qui https://www.getfreepdf.com/it/ che permette di modificare e gestire i file pdf.

Un ottimo programma per modificare e creare file pdf.

C# impostare il formato 1920 x 1080 in una nuova immagine da una esistente, con il .Net 9

In questo frammento di codice nel linguaggio di programmazione C#, vedremo come creare una nuova immagine da una esistente, con una risoluzione di 1920x1080, il tutto utilizzando le classi presenti nello spazio dei nomi System.Drawing e della versione .Net 9.


Di seguito lo spazio dei nomi da inserire in alto, sopra ad ogni dichiarazione, per la gestione della grafica.

C#

using System.Drawing.Drawing2D;

using System.Drawing.Imaging;


Di seguito la funzione, che passando dei parametri, quali percorso e nome del file immagine esistente, del nuovo file, e delle dimensione, crea una nuova immagine, impostando le dimensioni passate alla funzione.

C#

public static void ResizeImage(string percorsoNomeFileOriginale, string percorsoNomeNuovoFile, int width, int height)

{

try

{

//Creo un nuovo oggetto bmp dall'immagine esistente

using (Bitmap bmpOriginale = new Bitmap(percorsoNomeFileOriginale))

{

//Crea un nuovo oggetto bitmap con le dimensioni desiderate

using (Bitmap bmpNuovaImmagine = new Bitmap(width, height))

{

//Crea un oggetto Graphics per disegnare sulla nuova bitmap

using (Graphics graphics = Graphics.FromImage(bmpNuovaImmagine))

{

//Imposta le proprietà per una migliore qualità (opzionale)

graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;

graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;

graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

//Disegna l'immagine originale sulla nuova bitmap, ridimensionandola ed impostando le varie proprietà

graphics.DrawImage(bmpOriginale, 0, 0, width, height);

}

//Salva la nuova immagine

bmpNuovaImmagine.Save(percorsoNomeNuovoFile, ImageFormat.Jpeg);

}

}

MessageBox.Show("Immagine ridimensionata con successo!");

}

catch (System.Exception ex)

{

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

}

}





D seguito il frammento di codice, da utilizzare nell'evento click di un pulsante, per richiamare la funzione precedente.


C#

private void BtnRisoluzione_Click(object sender, EventArgs e)

{

// Imposta i percorsi e le dimensioni desiderate

string percorsoNomeFileOriginale = "C:\\varie\\menu.jpg";

string percorsoNomeNuovoFile = "C:\\varie\\menu19201080.jpg";

 

int newWidth = 1920;

int newHeight = 1080;

// Chiama la funzione per ridimensionare l'immagine

ResizeImage(percorsoNomeFileOriginale, percorsoNomeNuovoFile, newWidth, newHeight);

}







lunedì 10 novembre 2025

download gioco MaSzyna

 

download gioco maszyna

Un gioco molto ben fatto con una grafica molto ben curata nei vari dettagli.

Parliamo del gioco di simulatori dei treni MaSzyna, disponibile gratuitamente per sistemi operativi Windows .

Il video gioco è adatto a bambini, ragazzi ed adulti.

Per maggiori informazioni e download, visitate il seguente sito https://store.epicgames.com/it/p/maszyna-79052a

nuove icone di Microsoft Office

 

icone pacchetto Microsoft Office


In questi giorni per chi utilizza il pacchetto Microsoft Office, avrà notato nuove icone per contraddistinguere i vari programmi della suite per l'ufficio.

Icone, molto carine.

C# applicare un effetto ondulato ad un'immagine esistente con .Net 9

 

C# effetto ondulato

In questo esempio di codice nel linguaggio di programmazione C#, tramite la versione 9 del framework .Net, vedremo come creare una nuova immagine, da una esistente, applicando l'effetto ondulato, il tutto come mostrato nella figura precedente.

In alto, sopra ad ogni dichiarazione, inseriamo l'aggiunta per il namespace per la grafica, ossia System.Drawing. 

Di seguito si riporta il frammento di codice delle suddette operazioni.


C#

using System.Drawing.Drawing2D;

using System.Drawing.Imaging;


Nell'evento click di un pulsante in un progetto di tipo Windows Application, applicheremo tale effetto ad un'immagine esistente, dopo aver creato un oggetto con la stessa immagine.

Di seguito si riporta il codice per la gestione delle immagine, con alcuni commenti che illustrano i vari passaggi.



C#

private void BtnEffettoVortice_Click(object sender, EventArgs e)

{

try

{

string percorsoNomeFileOriginale = "C:\\varie\\uccelli.jpg";

string percorsoNomeNuovoFile = "C:\\varie\\uccelliEffettoVortice.jpg";

Bitmap originalImage = new Bitmap(percorsoNomeFileOriginale);

Bitmap vortexImage = new Bitmap(originalImage.Width, originalImage.Height);

int centerX = originalImage.Width / 2;

int centerY = originalImage.Height / 2;

double vortexStrength = 0.2;

double maxDistance = Math.Sqrt(centerX * centerX + centerY * centerY); // Distanza massima dal centro

for (int y = 0; y < originalImage.Height; y++)

{

for (int x = 0; x < originalImage.Width; x++)

{

// Calcola la distanza dal centro

double dx = x - centerX;

double dy = y - centerY;

double distance = Math.Sqrt(dx * dx + dy * dy);

// Normalizza la distanza per influenzare l'angolo in modo più uniforme

double normalizedDistance = distance / maxDistance;

//Calcola l'angolo, impostato dalla distanza normalizzata

double angle = Math.Atan2(dy, dx) + vortexStrength * (1 - normalizedDistance) * 5; // Regola il moltiplicatore

//Calcola le nuove coordinate

int newX = (int)(centerX + distance * Math.Cos(angle));

int newY = (int)(centerY + distance * Math.Sin(angle));

//Assicura che le nuove coordinate siano all'interno dei limiti

if (newX >= 0 && newX < originalImage.Width && newY >= 0 && newY < originalImage.Height)

{

vortexImage.SetPixel(x, y, originalImage.GetPixel(newX, newY));

}

}

}

vortexImage.Save(percorsoNomeNuovoFile);

MessageBox.Show("Immagine con effetto vortice creata con successo.");

 

 

}

catch (System.Exception ex)

{

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

}

}





domenica 9 novembre 2025

C# creare una nuova immagine con effetto di invertire parte destra con quella sinistra e viceversa in .Net 9

 

C# invertire parte sinistra in quella destra

In questo frammento di codice nel linguaggio di programmazione C#, vedremo come invertire in un'immagine esistente, la parte sinistra con la parte destra.

Utilizzeremo la versione del .Net Framework 9, in un progetto di tipo Windows Application, utilizzando le classi presenti nello spazio dei nomi "System.Drawing".

In visualizzazione codice, in alto sopra ad ogni dichiarazione, aggiungiamo lo spazio dei nomi per la gestione della grafica.

C#

using System.Drawing.Drawing2D;

using System.Drawing.Imaging;


Nell'evento click di un pulsante, aggiungiamo il seguente frammento di codice, che crea un nuova immagine, da una esistente, invertendo la parte sinistra in quella destra.


C#

private void BtnSinistraDestra_Click(object sender, EventArgs e)

{

try

{

string percorsoNomeFileOriginale = "C:\\varie\\uccelli.jpg";

string percorsoNomeNuovoFile = "C:\\varie\\uccelliSinistraDestra.jpg";

//Immagine originale

using (Bitmap bmpImmagineOriginale = new Bitmap(percorsoNomeFileOriginale))

{

//Nuova immagine per effetto destra e sinistra

Bitmap bmpNuovaImmagine = new Bitmap(bmpImmagineOriginale.Width, bmpImmagineOriginale.Height);

//Inverte l'immagine orizzontalmente

for (int x = 0; x < bmpImmagineOriginale.Width; x++)

{

for (int y = 0; y < bmpImmagineOriginale.Height; y++)

{

// Prendi il colore del pixel dall'immagine originale

Color pixelColor = bmpImmagineOriginale.GetPixel(x, y);

// Imposta il colore del pixel nella posizione speculare nell'immagine capovolta

// Per un capovolgimento orizzontale, l'asse X viene invertito

bmpNuovaImmagine.SetPixel(bmpImmagineOriginale.Width - 1 - x, y, pixelColor);

}

}

bmpNuovaImmagine.Save(percorsoNomeNuovoFile);

MessageBox.Show("Immagine con effetto invertita sinistra in destra  creata con successo");

}

 


}

catch (System.Exception ex)

{

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

}

} 


sabato 8 novembre 2025

Tutorial Asp.Net web API MongoDB : Creazione servizio Asp.Net Core API con il database MongoDB

Si riporta un articolo scritto per il sito https://www.iprogrammatori.it/articoli/database/tutorial-utilizzo-aspdotnet-core-api-database-mongodb


In questo articolo vedremo come realizzare un’applicazione web API Asp.Net per utilizzare una fonte dati di tipo NoSQL, quale MongoDB Community.
In particolare, vedremo come realizzare servizi REST utilizzando la tecnologia Asp.Net ed il linguaggio di programmazione C#, e le relative web api per eseguire le varie operazioni CRUD.
Come database utilizzeremo MongoDB Community, il database gratuito che si può installare sul proprio pc, mentre per l’ambiente di sviluppo Visual Studio 2022 Community e versione .Net 9




Creazione del progetto

Dopo aver aperto Visual Studio 2022 Community, selezioniamo come modello di progetto, quello relativo alla voce “API WEB Asp.Net core”, il tutto come mostrato in figura 1.

Figura 1 – Il modello del progetto
Figura 1 – Il modello del progetto


Una volta selezionato il modello, selezioniamo il pulsante avanti, e nella finestra successiva impostiamo il nome, facciamo click sul pulsante “Avanti”, e nella successiva finestra, lasciamo impostato i check per “Abilita Supporto OpenAPI” e per l’opzione “Usa I Controller”, il tutto come mostrato in figura 2.


Figura 2 – Le opzioni per la creazione del progetto
Figura 2 – Le opzioni per la creazione del progetto 


Confermiamo con il pulsante “Crea”, in modo da creare il progetto.
Tramite la finestra “Nuget”, aggiungiamo nel nostro progetto il pacchetto relativo a “MongoDB.Driver”, il tutto come mostrato in figura 3.



Figura 3 – L’aggiunta del pacchetto MondoDB.Driver
Figura 3 – L’aggiunta del pacchetto MondoDB.Driver




Se non è presente nel progetto la cartella “Models”, dalla finestra di “Esplora Soluzioni”, se ne crea una nuova.
La creazione del progetto è terminata, ora non resta che scrivere il codice.

Stesura del codice

Nella finestra “Esplora soluzioni”, facciamo click sulla cartella “Models” con il tasto destro del mouse, nel menu che viene visualizzato, selezioniamo “Classe” e come nome impostiamo quello di una collection presente nel database. Nel nostro caso, avendo una collection denominata “Dati”, daremo il valore “Dati”.
La classe dati, dovrà mappare i campi della collection, quindi dobbiamo scrivere le proprietà dei vari campi della collectioni.
Nella classe, sopra ad ogni dichiarazione, aggiungiamo lo spazio dei nomi, per gestire i vari campi di tipo “MongoDB”, di seguito si riporta il frammento delle suddette operazioni.



C#

using MongoDB.Bson;

using MongoDB.Bson.Serialization.Attributes;


La classe rappresenterà la collection, di seguito la dichiarazione di classe.



C#

using MongoDB.Bson;

using MongoDB.Bson.Serialization.Attributes;

 

namespace WebMongoDB.Models

{

    public class Dati

    {

        [BsonId]

        [BsonRepresentation(BsonType.ObjectId)]

        public string? Id { get; set; }

 

        [BsonElement("nome")]

        public string Nome { get; set; } = null!;

 

        [BsonElement("cognome")]

        public string Cognome { get; set; } = null!;

        [BsonElement("email")]

        public string Email { get; set; } = null!;

 

        [BsonElement("data_nascita")]

        public DateTime  DataNascita { get; set; }

    }

}





Il campo Id, essendo un campo univoco, è stato impostato di tipo “ObjectID.
Aggiungiamo al file “appsettings.json”, la stringa di connessione al database, impostando anche il nome del database ed il nome della collection, di seguito la stringa di connessione.



//Connection string per il database MongoDB

 "MongoDBSettings": {

   "ConnectionString": "mongodb://localhost:27017",

   "DatabaseName": "Amministrazione",

   "CollectionName": "Dati"

 },



Di seguito il codice completo del file.



{

  //Connection string for MongoDB

  "MongoDBSettings": {

    "ConnectionString": "mongodb://localhost:27017",

    "DatabaseName": "Amministrazione",

    "CollectionName": "Dati"

  },

  "Logging": {

    "LogLevel": {

      "Default": "Information",

      "Microsoft.AspNetCore": "Warning"

    }

  },

  "AllowedHosts": "*"

}





Nella cartella “Models”, aggiungiamo una classe, che farà da mappatura con il file di configurazione. Si crea una classe denominata “DatiSettings”, con le proprietà riguardante i vari campi.
Di seguito si riporta il codice delle suddette operazioni.



C#

public class DatiSettings

{

    public string ConnectionString { get; set; } = null!;

 

    public string DatabaseName { get; set; } = null!;

 

    public string CollectionName { get; set; } = null!;

}





Apriamo il  file “Programm” e dopo la creazione di un oggetto Builder, aggiungiamo il codice per mappare i rifermenti nel file di setting, nella classe appena creata.


using WebMongoDB.Models;

 

var builder = WebApplication.CreateBuilder(args);

 

builder.Services.Configure<DatiSettings>(

    builder.Configuration.GetSection("MongoDBSettings"));



Si crea una nuova cartella, dove metteremo il file dei servizi.
La cartella si chiamerà “Servizi”, ed la classe per le varie operazioni CRUD, si chiamerà DatiServizi.
Nella classe, sopra ad ogni dichiarazione, inseriamo lo spazio dei nomi per la gestione delle classi di MongoDB.
Di seguito si riporta il frammento di codice delle suddette operazioni. 



C#

using MongoDB.Driver;

using Microsoft.Extensions.Options;



A livello di classe, si crea un oggetto privato a livello di campo, per gestire i dati della collection. 
Di seguito si riporta il frammento di codice da utilizzare a livello di campo di classe.




C#

private readonly IMongoCollection<Dati> _datiCollection;



Nel costruttore della classe, dobbiamo iniziare la collection, istanziando oggetti di tipo “MongoClient”, per la gestione del server MongoDB, un oggetto di “IMongoDatabase”, per la gestione del database, ed infine la collection con i riferimenti che abbiamo iniziato.
Di seguito si riporta il frammento di codice delle suddette dichiarazioni.



C#

public DatiServizi(IOptions<DatiSettings> datiSettings)

{

    var mongoClient = new MongoClient(datiSettings.Value.ConnectionString);

    var mongoDatabase = mongoClient.GetDatabase(datiSettings.Value.DatabaseName);

    _datiCollection = mongoDatabase.GetCollection<Dati>(datiSettings.Value.CollectionName);

 

}




Terminata la parte di inizializzare la gestione della collection, non resta che creare i metodi per le varie operazioni CRUD.
Le varie operazioni utilizzando i metodi dell’oggetto “IMongoCollection” creato a livello di classe.
Di seguito si riporta il frammento di codice delle varie operazioni CRUD.



C#

//Metodo per ottenere tutti i documenti dalla collezione

public async Task<List<Dati>> GetAsync() =>

    await _datiCollection.Find(_ => true).ToListAsync();

//Metodo per ottenere un documento specifico tramite l'Id

public async Task<Dati?> GetAsync(string id) =>

    await _datiCollection.Find(x => x.Id == id).FirstOrDefaultAsync();

//Metodo per creare un nuovo documento

public async Task CreateAsync(Dati newDati) =>

    await _datiCollection.InsertOneAsync(newDati);

//Metodo per aggiornare un documento esistente

public async Task UpdateAsync(string id, Dati updatedDati) =>

    await _datiCollection.ReplaceOneAsync(x => x.Id == id, updatedDati);

//Metodo per eliminare un documento tramite l'Id

public async Task RemoveAsync(string id) =>

    await _datiCollection.DeleteOneAsync(x => x.Id == id);

 



Si riporta il codice completo della classe per la gestione dei servizi per le varie operazioni CRUD, per fornire in maniera chiara tale dichiarazioni.


C#

using Microsoft.Extensions.Options;

using MongoDB.Driver;

using WebMongoDB.Models;

 

namespace WebMongoDB.Servizi

{

    public class DatiServizi

    {

        private readonly IMongoCollection<Dati> _datiCollection;

 

        //Nel costruttore inizializzo le impostazioni di connessione a MongoDB

        public DatiServizi(IOptions<DatiSettings> datiSettings)

        {

            var mongoClient = new MongoClient(datiSettings.Value.ConnectionString);

            var mongoDatabase = mongoClient.GetDatabase(datiSettings.Value.DatabaseName);

            _datiCollection = mongoDatabase.GetCollection<Dati>(datiSettings.Value.CollectionName);

 

        }

        //Metodo per ottenere tutti i documenti dalla collezione

        public async Task<List<Dati>> GetAsync() =>

            await _datiCollection.Find(_ => true).ToListAsync();

        //Metodo per ottenere un documento specifico tramite l'Id

        public async Task<Dati?> GetAsync(string id) =>

            await _datiCollection.Find(x => x.Id == id).FirstOrDefaultAsync();

        //Metodo per creare un nuovo documento

        public async Task CreateAsync(Dati newDati) =>

            await _datiCollection.InsertOneAsync(newDati);

        //Metodo per aggiornare un documento esistente

        public async Task UpdateAsync(string id, Dati updatedDati) =>

            await _datiCollection.ReplaceOneAsync(x => x.Id == id, updatedDati);

        //Metodo per eliminare un documento tramite l'Id

        public async Task RemoveAsync(string id) =>

            await _datiCollection.DeleteOneAsync(x => x.Id == id);

 

 

 

    }

}

 

Ritorniamo nel file “Program.cs” e sotto la riga di codice nel quale abbiamo gestito le impostazioni di connessione del database, aggiungiamo la classe servizi appena creata tramite il metodo “AddSingleton” .


builder.Services.AddSingleton<DatiServizi>();




Di seguito si riporta tale dichiarazione.


C#

 using WebMongoDB.Models;

using WebMongoDB.Servizi;

 

var builder = WebApplication.CreateBuilder(args);

 

builder.Services.Configure<DatiSettings>(

    builder.Configuration.GetSection("MongoDBSettings"));

 

builder.Services.AddSingleton<DatiServizi>();


Nella cartella “Controllers”  aggiungiamo una nuova classe, denominata “DatiControllers” , tasto destro sulla cartella, e dal menu, selezioniamo la voce “Aggiungi” e nel sottomenu selezionare la voce “Classe”.
La classe deve ereditare da “ ControllerBase”, a livello di classe, si crea un oggetto per la gestione della classe dei servizi, che verrà inizializzata nel costruttore della classe.
Di seguito si riporta il frammento di codice delle suddette operazioni.


C#

using Microsoft.AspNetCore.Mvc;

using WebMongoDB.Servizi;

 

namespace WebMongoDB.Controllers

{

    [ApiController]

    [Route("api/[controller]")]

    public class DatiControllers : ControllerBase

    {

 

        private readonly DatiServizi _datiServizi;

 

 

 

        public DatiControllers(DatiServizi datiServizi  ) {

            _datiServizi = datiServizi;

        }

 

    }

}


Nella classe, inseriamo i vari metodi per gestire le operazioni CRUD,
Di seguito si riporta il codice completo della classe.



C#

using Microsoft.AspNetCore.Mvc;

using WebMongoDB.Models;

using WebMongoDB.Servizi;

 

namespace WebMongoDB.Controllers

{

    [ApiController]

    [Route("api/[controller]")]

    public class DatiControllers : ControllerBase

    {

 

        private readonly DatiServizi _datiServizi;

 

        public DatiControllers(DatiServizi datiServizi  ) {

            _datiServizi = datiServizi;

        }

 

 

        [HttpGet]

        public async Task<List<Dati>> Get() {

            return  await _datiServizi.GetAsync() ;

        }

 

        [HttpGet("{id:length(24)}")]

        public async Task<ActionResult<Dati>> Get(string id) {

            var dati = await _datiServizi.GetAsync(id);

            if (dati is null) {

                return NotFound();

            }

            return  dati ;

        }

 

 

        [HttpPost]

        public async Task<IActionResult> Post(Dati newDati) {

            await _datiServizi.CreateAsync(newDati);

            return CreatedAtAction(nameof(Get), new { id = newDati.Id }, newDati);

        }

 

 

        [HttpPut("{id:length(24)}")]

        public async Task<IActionResult> Update(string id, Dati updatedDati) {

            var dati = await _datiServizi.GetAsync(id);

            if (dati is null) {

                return NotFound();

            }

            updatedDati.Id = dati.Id;

            await _datiServizi.UpdateAsync(id, updatedDati);

            return NoContent();

        }  

        [HttpDelete("{id:length(24)}")]

        public async Task<IActionResult> Delete(string id) {

            var dati = await _datiServizi.GetAsync(id);

            if (dati is null) {

                return NotFound();

            }

            await _datiServizi.RemoveAsync(id);

            return NoContent();

        }  

 

 

 

    }

}





Ritorniamo nel file “Program.cs” ed impostiamo la gestione dei campi Json.
Di seguito si riporta il codice modificato per tale dichiarazione.


C#

using WebMongoDB.Models;

using WebMongoDB.Servizi;

 

var builder = WebApplication.CreateBuilder(args);

 

builder.Services.Configure<DatiSettings>(

    builder.Configuration.GetSection("MongoDBSettings"));

 

builder.Services.AddSingleton<DatiServizi>();

 

 

// Add services to the container.

 

builder.Services.AddControllers().AddJsonOptions(

        options => options.JsonSerializerOptions.PropertyNamingPolicy = null);





Impostiamo l’attributo Json per la proprietà “Nome” per la classe modelli creata in precedenza, quella denominata “Dati”.
Si riporta il codice delle seguenti dichiarazione.

C#

        [JsonPropertyName("nome")]

        [BsonElement("nome")]

        public string Nome { get; set; } = null!;




Di seguito il codice completo della classe “Dati”.



C#

using MongoDB.Bson;

using MongoDB.Bson.Serialization.Attributes;

using System.Text.Json.Serialization;

 

namespace WebMongoDB.Models

{

    public class Dati

    {

        [BsonId]

        [BsonRepresentation(BsonType.ObjectId)]

        public string? Id { get; set; }

        [JsonPropertyName("nome")]

        [BsonElement("nome")]

        public string Nome { get; set; } = null!;

 

        [BsonElement("cognome")]

        public string Cognome { get; set; } = null!;

        [BsonElement("email")]

        public string Email { get; set; } = null!;

 

        [BsonElement("data_nascita")]

        public DateTime  DataNascita { get; set; }

    }

}


Ora non resta che eseguire le varie operazioni CRUD, per verificare la gestione delle operazioni.
Da ricordare che il modello di classe, deve avere gli stessi campi della collection, se un documento presenta un campo diverso o aggiunto, verrà generato un errore.
Il risultato sarà come mostrato in figura 4.


Figura 4 – Il test in Visual Studio 2022 Community
Figura 4 – Il test in Visual Studio 2022 Community






Conclusioni

L’articolo ha fornito al lettore una panoramica sulla realizzazione di servizi Web API utilizzando la tecnologia Asp.Net Core, con la base dati di MongoDB.  In particolare, si sono affrontati i vari aspetti per creare un servizio per gestire tutte le operazioni sui dati di questo database.