Przechowywanie danych w bazach danych NoSQL
Dane nie mają tylko formy dobrze ustrukturyzowanych danych relacyjnych. Czasami musisz przechowywać dane, które nie pasują starannie do tabeli. Na przykład możesz chcieć przechowywać dokument zawierający listę elementów, z których każdy ma inny schemat. W takim przypadku baza danych NoSQL jest lepszym wyborem niż relacyjna baza danych. Jedną z najpopularniejszych baz danych NoSQL jest MongoDB.
Korzystanie ze składnika .NET Aspire MongoDB
Ten sam wzorzec jak poprzednio dotyczy bazy danych MongoDB. Musisz skonfigurować zarówno hosta aplikacji, jak i każdy projekt korzystający z aplikacji.
Konfigurowanie hosta aplikacji
Zainstaluj składnik hostingu bazy danych MongoDB:
dotnet add package Aspire.Hosting.MongoDB --prerelease
Następnie w pliku Program.cs hosta aplikacji dodaj ten kod, aby zarejestrować kontener i utworzyć bazę danych:
var mongo = builder.AddMongoDB("mongo");
var mongodb = mongo.AddDatabase("mongodb");
Przekaż usługę bazy danych do wszystkich projektów, które go używają:
var northernTradersCatalogAPI = builder.AddProject<Projects.NorthernTraders_CatalogAPI>()
.WithReference(mongodb);
Konfigurowanie projektów zużywających
Należy dodać składnik .NET Aspire MongoDB do dowolnego projektu mikrousług korzystającego z bazy danych. Do projektu, który wymaga dostępu do danych, należy dodać pakiet Aspire.MongoDB.Driver
NuGet przy użyciu interfejsu wiersza polecenia platformy .NET lub menedżera pakietów NuGet programu Visual Studio.
dotnet add package Aspire.MongoDB.Driver --prerelease
W pliku AppHostProgram.cs zarejestruj sterownik bazy danych MongoDB. Na przykład kod może wyglądać następująco:
var mongoDB = builder.AddMongoDB("mongo")
.WithMongoExpress()
.AddDatabase("BasketDB");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(mongoDB);
Składnik Bazy danych MongoDB, taki jak PostgeSQL i MySQL, udostępnia narzędzie do zarządzania bazami danych o nazwie Mongo Express. Powyższy kod dodaje dla niego kontener.
Korzystanie z bazy danych MongoDB
Wszystkie projekty w rozwiązaniu, które wymagają dostępu do bazy danych MongoDB, muszą dodać klienta bazy danych MongoDB. Następnie używasz klienta bazy danych MongoDB do odczytywania i zapisywania danych w bazie danych.
builder.AddMongoDBClient("BasketDB");
Metoda AddMongoDBClient
dodaje klienta do projektu. Zobacz ten przykładowy kod, który go używa:
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();
}
}
Powyższy kod tworzy kolekcję bazy danych MongoDB, która umożliwia metodzie wykonywanie zapytań względem wszystkich obiektów CustomerBasket
w celu znalezienia tej z pasującym BuyerId
.
Konfigurowanie składnika Bazy danych MongoDB
Podobnie jak poprzednie składniki bazy danych, składnik MongoDB obsługuje odnajdywanie usług i wstrzykiwanie zależności w .NET Aspire. Dlatego jeśli używasz tej samej nazwy bazy danych zdefiniowanej w AppHost
i projektach, nie ma potrzeby zarządzania parametrami połączenia. Jeśli jednak używasz już istniejącej bazy danych MongoDB, która nie jest zarządzana przez platformę .NET Aspire, możesz skonfigurować ją na inne sposoby.
Używanie ciągu połączenia
W pliku dotyczących Twoich projektów appsettings.json dodaj parametry połączenia do bazy danych MongoDB. Na przykład:
{
...
"ConnectionStrings": {
"MongoConnectionString": "mongodb://localhost:27017/test",
}
}
Poprzedni łańcuch połączeniowy dodaje obsługę bazy danych o nazwie test na lokalnym serwerze MongoDB, który nasłuchuje na porcie 27017. Te parametry połączenia są używane w pliku Program.cs podczas tworzenia klienta bazy danych MongoDB:
builder.AddMongoDBClient("MongoConnectionString");
Inne opcje
Tag wersji Microsoft.Extensions.Configuration
bazy danych MongoDB jest Aspire:MongoDB:Driver
. Możesz więc nawiązać połączenie z bazą danych MongoDB przy użyciu następującej konfiguracji JSON:
{
"Aspire": {
"MongoDB": {
"Driver": {
"ConnectionString": "mongodb://localhost:27017/test",
"HealthChecks": true,
"HealthCheckTimeout": 10000,
"Tracing": true
},
}
}
}
W przypadku poprzedniej konfiguracji nie trzeba już dodawać parametrów połączenia, po prostu użyj builder.AddMongoDBClient();
.
Ostateczną opcją jest skonfigurowanie połączenia w kodzie przy użyciu wbudowanych konfiguracji. Na przykład:
builder.AddMongoDBClient("mongodb", static settings =>
{
settings.ConnectionString = "mongodb://localhost:27017/test";
settings.HealthChecks = true;
});