Mongodb мультитенант в базовом проекте .NET - PullRequest
1 голос
/ 05 апреля 2019

Я использую .NET Core и MongoDB. В настоящее время это единый проект базы данных. Теперь я хочу реализовать многопользовательский режим в своем проекте. Это отдельная база данных для разных пользователей. Когда пользователь входит на сайт и на основании данных этого пользователя хочет выбрать строку подключения.

https://web.archive.org/web/20140812091703/

http://support.mongohq.com/use-cases/multi-tenant.html

https://gunnarpeipman.com/aspnet/tenant-providers/

Но проблема в том, что я понятия не имею, как реализовать это в моем существующем коде?

Мой существующий код

public MetaphorsContext(IMongoClient client,
                        IMongoDatabase database)
{
  _client = client;
  _database = database;
}

public IMongoCollection<Location> Locations
{
  get ???
}

1 Ответ

0 голосов
/ 05 апреля 2019

Если в вашем подходе используются разные базы данных в одном и том же кластере, вам не нужны разные строки подключения, а просто словарь, который сопоставляет каждый идентификатор арендатора с соответствующими MongoDatabase:

public IDictionary<string, IMongoDatabase> Databases = ...

string tenantID = ...

Databases.TryGetValue(tenantID, out var database);

// use database to get collections

Если разные базы данных хранятся в разных кластерах, то у вас может быть словарь, который сопоставляет каждый идентификатор арендатора с соответствующим MongoClient.

public IDictionary<string, IMongoClient> Clients = ...

string tenantID = ...

Clients.TryGetValue(tenantID, out var client);

// use client's databases and their collections
...