Przechowywanie danych w bazach danych NoSQL

Ukończone

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 zużywające dane.

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. Pakiet NuGet należy dodać Aspire.MongoDB.Driver do projektu, który wymaga dostępu do danych 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 Program.cs AppHost 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 CustomerBasket obiektów w celu znalezienia tej kolekcji z pasującym BuyerIdelementem .

Konfigurowanie składnika Bazy danych MongoDB

Podobnie jak w przypadku poprzednich składników bazy danych składnik MongoDB obsługuje odnajdywanie i wstrzykiwanie zależności usługi platformy .NET Aspire. Jeśli więc używasz tej samej nazwy bazy danych zdefiniowanej AppHost w projektach i, nie ma potrzeby zarządzania parametry 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 parametry połączenia

W plikach appsettings.json projektów dodaj parametry połączenia do bazy danych MongoDB. Na przykład:

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

Poprzedni parametry połączenia dodaje obsługę bazy danych o nazwie test na lokalnym serwerze bazy danych MongoDB nasłuchując na porcie 27017. Ten parametry połączenia jest używany w pliku Program.cs podczas tworzenia klienta bazy danych MongoDB:

builder.AddMongoDBClient("MongoConnectionString");

Inne opcje

Tag wersji Microsoft.Extensions.Configuration bazy danych MongoDB to 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ć parametry połączenia, wystarczy użyć polecenia 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; 
  });