Gegevens opslaan in NoSQL-databases
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;
});