Lagra data i NoSQL-databaser
Data har inte bara formen av välstrukturerade relationsdata. Ibland måste du lagra data som inte passar i en tabell. Du kanske till exempel vill lagra ett dokument som innehåller en lista med objekt, var och en med ett annat schema. I det här fallet är en NoSQL-databas ett bättre val än en relationsdatabas. En av de mest populära NoSQL-databaserna är MongoDB.
Använda .NET Aspire MongoDB-komponenten
Samma mönster som tidigare gäller för MongoDB. Du måste konfigurera både appvärden och varje konsumerande projekt.
Konfigurering av appvärden
Installera MongoDB-värdkomponenten:
dotnet add package Aspire.Hosting.MongoDB --prerelease
Lägg sedan till den här koden i appvärdens Program.cs-fil för att registrera containern och skapa en databas:
var mongo = builder.AddMongoDB("mongo");
var mongodb = mongo.AddDatabase("mongodb");
Skicka databastjänsten till alla projekt som använder den:
var northernTradersCatalogAPI = builder.AddProject<Projects.NorthernTraders_CatalogAPI>()
.WithReference(mongodb);
Konfigurera de förbrukande projekten
Du måste lägga till .NET Aspire MongoDB-komponenten i alla mikrotjänstprojekt som använder databasen. Du lägger till Aspire.MongoDB.Driver
NuGet-paketet i projektet som behöver dataåtkomst med hjälp av antingen .NET CLI eller Visual Studio NuGet-pakethanteraren.
dotnet add package Aspire.MongoDB.Driver --prerelease
I filen AppHostProgram.cs registrerar du MongoDB-drivrutinen. Koden kan till exempel se ut så här:
var mongoDB = builder.AddMongoDB("mongo")
.WithMongoExpress()
.AddDatabase("BasketDB");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(mongoDB);
MongoDB-komponenten, som PostgeSQL och MySQL, tillhandahåller ett databashanteringsverktyg som heter Mongo Express. Koden ovan lägger till en container för den.
Använda en MongoDB-databas
Alla projekt i din lösning som behöver åtkomst till MongoDB-databasen måste lägga till en MongoDB-klient. Sedan använder du MongoDB-klienten för att läsa och skriva data till databasen.
builder.AddMongoDBClient("BasketDB");
Metoden AddMongoDBClient
lägger till en klient i projektet. Se den här exempelkoden som använder den:
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();
}
}
Koden ovan skapar en MongoDB-samling som gör att metoden kan köra frågor mot alla CustomerBasket
objekt för att hitta den med matchande BuyerId
.
Konfigurera MongoDB-komponenten
Precis som de tidigare databaskomponenterna stöder MongoDB-komponenten .NET Aspires tjänstidentifiering och beroendeinmatning. Så om du använder samma databasnamn som definierats i AppHost
och projekt behöver du inte hantera anslutningssträngar. Men om du redan använder en befintlig MongoDB-databas som inte hanteras av .NET Aspire kan du konfigurera den på andra sätt.
Använda en anslutningssträng
I dina projekt appsettings.json fil lägger du till en anslutningssträng i MongoDB-databasen. Till exempel:
{
...
"ConnectionStrings": {
"MongoConnectionString": "mongodb://localhost:27017/test",
}
}
Den tidigare anslutningssträngen lägger till stöd för en databas med namnet test på en lokal MongoDB-databasserver som lyssnar på port 27017. Du använder den här anslutningssträngen i din Program.cs-fil när du skapar MongoDB-klienten:
builder.AddMongoDBClient("MongoConnectionString");
Andra alternativ
Taggen för Microsoft.Extensions.Configuration
versionen av MongoDB är Aspire:MongoDB:Driver
. Så du kan ansluta till en MongoDB-databas med hjälp av följande JSON-konfiguration:
{
"Aspire": {
"MongoDB": {
"Driver": {
"ConnectionString": "mongodb://localhost:27017/test",
"HealthChecks": true,
"HealthCheckTimeout": 10000,
"Tracing": true
},
}
}
}
Med den tidigare konfigurationen behöver du inte längre lägga till anslutningssträngen. Använd bara builder.AddMongoDBClient();
.
Det sista alternativet är att konfigurera anslutningen i kod med infogade konfigurationer. Till exempel:
builder.AddMongoDBClient("mongodb", static settings =>
{
settings.ConnectionString = "mongodb://localhost:27017/test";
settings.HealthChecks = true;
});