Gegevens opslaan in NoSQL-databases

Voltooid

Gegevens hebben niet alleen de vorm van goed gestructureerde relationele gegevens. Soms moet u gegevens opslaan die niet netjes in een tabel passen. U wilt bijvoorbeeld een document opslaan dat een lijst met items bevat, elk met een ander schema. In dit geval is een NoSQL-database een betere keuze dan een relationele database. Een van de populairste NoSQL-databases is MongoDB.

Het .NET Aspire MongoDB-onderdeel gebruiken

Hetzelfde patroon als voorheen geldt voor MongoDB. U moet zowel de app-host als elk verbruikend project configureren.

De app-host configureren

Installeer het MongoDB-hostingonderdeel:

dotnet add package Aspire.Hosting.MongoDB --prerelease

Voeg vervolgens in het Program.cs-bestand van de app-host deze code toe om de container te registreren en een database te maken:

var mongo = builder.AddMongoDB("mongo");
var mongodb = mongo.AddDatabase("mongodb");

Geef de databaseservice door aan alle projecten die deze gebruiken:

var northernTradersCatalogAPI = builder.AddProject<Projects.NorthernTraders_CatalogAPI>()
                                       .WithReference(mongodb);

De verbruikende projecten configureren

U moet het .NET Aspire MongoDB-onderdeel toevoegen aan elk microserviceproject dat gebruikmaakt van de database. U voegt het Aspire.MongoDB.Driver NuGet-pakket toe aan het project waarvoor gegevenstoegang nodig is, met behulp van .NET CLI of Visual Studio NuGet-pakketbeheer.

dotnet add package Aspire.MongoDB.Driver --prerelease

Registreer in het bestand AppHostProgram.cs het MongoDB-stuurprogramma. Uw code kan er bijvoorbeeld als volgt uitzien:

var mongoDB = builder.AddMongoDB("mongo")
                     .WithMongoExpress()
                     .AddDatabase("BasketDB");

var myService = builder.AddProject<Projects.MyService>()
                       .WithReference(mongoDB);

Het MongoDB-onderdeel, zoals PostgeSQL en MySQL, biedt een databasebeheerprogramma met de naam Mongo Express. Met de bovenstaande code wordt er een container voor toegevoegd.

Een MongoDB-database gebruiken

Alle projecten in uw oplossing die toegang nodig hebben tot de MongoDB-database, moeten een MongoDB-client toevoegen. Vervolgens gebruikt u de MongoDB-client om gegevens naar de database te lezen en te schrijven.

builder.AddMongoDBClient("BasketDB");

De methode AddMongoDBClient voegt een client toe aan het project. Bekijk deze voorbeeldcode die deze gebruikt:

using MongoDB.Driver;
using MongoDB.Driver.Linq;

public class MongoBasketStore
{
  public async Task<CustomerBasket?> GetBasketAsync(IMongoClient mongoClient, string customerId)
  {
    var basketCollection = mongoClient.GetDatabase("BasketDB").GetCollection<CustomerBasket>("basketitems");
    var filter = Builders<CustomerBasket>.Filter.Eq(r => r.BuyerId, customerId);
  
    return await basketCollection.Find(filter).FirstOrDefaultAsync();
  }
}

Met de bovenstaande code maakt u een MongoDB-verzameling waarmee de methode query's kan uitvoeren op alle CustomerBasket objecten om de verzameling te vinden met de overeenkomende BuyerId.

Het MongoDB-onderdeel configureren

Net als de vorige databaseonderdelen ondersteunt het MongoDB-onderdeel de servicedetectie en afhankelijkheidsinjectie van .NET Aspire. Dus als u dezelfde databasenaam gebruikt die is gedefinieerd in de AppHost en projecten, hoeft u geen verbindingsreeksen te beheren. Maar als u al een bestaande MongoDB-database gebruikt die niet wordt beheerd door .NET Aspire, hebt u andere manieren om deze te configureren.

Een verbindingsreeks gebruiken

Voeg in uw projecten appsettings.json bestand een verbindingsreeks toe aan de MongoDB-database. Bijvoorbeeld:

{
  ...
  "ConnectionStrings": {
    "MongoConnectionString": "mongodb://localhost:27017/test",
  }
}

De vorige verbindingsreeks voegt ondersteuning toe voor een database met de naam test op een lokale MongoDB-databaseserver die luistert op poort 27017. U gebruikt deze verbindingsreeks in uw Program.cs-bestand wanneer u de MongoDB-client maakt:

builder.AddMongoDBClient("MongoConnectionString");

Andere opties

De tag voor de Microsoft.Extensions.Configuration versie van MongoDB is Aspire:MongoDB:Driver. U kunt dus verbinding maken met een MongoDB-database met behulp van de volgende JSON-configuratie:

{
  "Aspire": {
    "MongoDB": {
      "Driver": {
        "ConnectionString": "mongodb://localhost:27017/test",
        "HealthChecks": true,
        "HealthCheckTimeout": 10000,
        "Tracing": true
      },
    }
  }
}

Met de vorige configuratie hoeft u de verbindingsreeks niet meer toe te voegen, gewoon builder.AddMongoDBClient();te gebruiken.

De laatste optie is het configureren van de verbinding in code, met inlineconfiguraties. Bijvoorbeeld:

builder.AddMongoDBClient("mongodb", static settings => 
  { 
    settings.ConnectionString = "mongodb://localhost:27017/test"; 
    settings.HealthChecks = true; 
  });