C#
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
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; }
}
}
//Connection string per il database MongoDB
"MongoDBSettings": {
"ConnectionString": "mongodb://localhost:27017",
"DatabaseName": "Amministrazione",
"CollectionName": "Dati"
},
{
//Connection string for MongoDB
"MongoDBSettings": {
"ConnectionString": "mongodb://localhost:27017",
"DatabaseName": "Amministrazione",
"CollectionName": "Dati"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
C#
public class DatiSettings
{
public string
ConnectionString { get; set; } = null!;
public string DatabaseName
{ get; set; } = null!;
public string
CollectionName { get; set; } = null!;
}
using WebMongoDB.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<DatiSettings>(
builder.Configuration.GetSection("MongoDBSettings"));
C#
using MongoDB.Driver;
using Microsoft.Extensions.Options;
C#
private readonly IMongoCollection<Dati>
_datiCollection;
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);
}
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);
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);
}
}
builder.Services.AddSingleton<DatiServizi>();
C#
using
WebMongoDB.Models;
using WebMongoDB.Servizi;
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<DatiSettings>(
builder.Configuration.GetSection("MongoDBSettings"));
builder.Services.AddSingleton<DatiServizi>();
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;
}
}
}
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();
}
}
}
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);
C#
[JsonPropertyName("nome")]
[BsonElement("nome")]
public string Nome { get; set; } = null!;
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; }
}
}



Nessun commento:
Posta un commento