Asp.net mvc asp.net MVC中RavenDB中的多租户索引

Asp.net mvc asp.net MVC中RavenDB中的多租户索引,asp.net-mvc,ravendb,Asp.net Mvc,Ravendb,在多租户RavenDB应用程序中(每个租户一个数据库,一个包含一般租户数据的“概览”数据库),索引创建策略是什么?(asp.net mvc) 在简单(不是多租户)应用程序中,可以在global.asax中创建索引 理论上,您可以在global.asax中查询每个租户,并为每个租户创建索引。但我想当租户数量增加时,这将是一个巨大的业绩打击 不可能在创建租户时创建索引,因为现有租户应该能够在更新时获得新索引 那么,关于如何以及何时创建这些索引,最佳做法是什么呢?您可以在应用程序启动时使用此方法,

在多租户RavenDB应用程序中(每个租户一个数据库,一个包含一般租户数据的“概览”数据库),索引创建策略是什么?(asp.net mvc)

在简单(不是多租户)应用程序中,可以在global.asax中创建索引

  • 理论上,您可以在global.asax中查询每个租户,并为每个租户创建索引。但我想当租户数量增加时,这将是一个巨大的业绩打击
  • 不可能在创建租户时创建索引,因为现有租户应该能够在更新时获得新索引

那么,关于如何以及何时创建这些索引,最佳做法是什么呢?

您可以在应用程序启动时使用此方法,而无需担心性能

public static void CreateIndexesForDatabases(Assembly assemblyToScanForIndexingTasks, IDocumentStore documentStore, string[] databases)
{
    var catalog = new CompositionContainer(new AssemblyCatalog(assemblyToScanForIndexingTasks));
    foreach (var database in databases)
    {
        IndexCreation.CreateIndexes(catalog, documentStore.DatabaseCommands.ForDatabase(database), documentStore.Conventions);
    }
}
只是别忘了包括Raven.Client.Extensions