.NET核心项目中的Mongodb多租户

时间:2019-04-05 10:46:53

标签: mongodb asp.net-core multi-tenant

我正在使用.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 :(得分:0)

如果您的方法涉及同一集群中的不同数据库,则您不需要不同的连接字符串,而只需一个字典即可将每个租户ID映射到其各自的table

MongoDatabase

如果不同的数据库保存在不同的群集中,那么您可以拥有一个字典,将每个租户ID映射到其各自的public IDictionary<string, IMongoDatabase> Databases = ... string tenantID = ... Databases.TryGetValue(tenantID, out var database); // use database to get collections

MongoClient