Sie müssen nicht auf Vorhandensein prüfen. Der Server vergleicht automatisch die von Ihnen gesendete Indexdefinition und prüft, ob sie bereits existiert. Wenn einer mit dem gleichen Namen und der gleichen Definition existiert, wird er alleine gelassen. Wenn einer mit demselben Namen existiert, aber die Definition sich geändert hat, wird der alte gelöscht und der neue erstellt.
Normalerweise würde man Indizes in der gleichen Anwendung beim Start der Anwendung erstellen. Für Web-Apps, die in global.asax und für Konsolen-/Desktop-Apps verwendet werden können, wäre dies nur der erste Teil des Startup-Codes.
Aber manchmal ist das nicht möglich, zum Beispiel wenn Sie viele verschiedene Datenbanken haben, wie es oft Multi-Tenant-Anwendungen tun. In diesen Fällen würden Sie Indizes erstellen, wenn Sie jede Tenant-Datenbank erstellen, und Sie müssen möglicherweise beim Rollout eines Versionsupgrades weitere Indizes aktualisieren oder erstellen.
Auch sollte ich erwähnen, dass Sie Indizes ein paar verschiedene Möglichkeiten erstellen können.
// scans the assembly for all indexes and creates them
IndexCreation.CreateIndexes(assembly, documentStore);
// scans a MEF catalog for all indexes and creates them
IndexCreation.CreateIndexes(catalog, documentStore);
// puts a single index the HARD way
documentStore.DatabaseCommands.PutIndex(...);
// puts a single index the easy way
documentStore.ExecuteIndex(new YourIndexCreationTask());
Es gibt ein paar andere, aber Sie bekommen die Idee.
Und gründlich zu sein, wenn Sie Index existance wirklich für hat überprüfen möchten, können Sie verwenden:
documentStore.DatabaseCommands.GetIndex("YourIndex") != null
Aber das wird nur dem Namen nach überprüfen, nicht per Definition. Und du brauchst es nicht.
Ich weiß, dass dies Ihre Frage nicht beantwortet, aber ich fand es erwähnenswert, dass RavenDB automatisch Indizes für Sie erstellt, wenn Sie es zulassen. Siehe [diese RavenDB-Dokumentseite] (http://ravendb.net/docs/client-api/querying) und speziell den Teil über dynamische Indizes. – ean5533
@ ean5533 - das gilt für dynamische Indizes, ja. Ich glaube, das OP ist besorgt über die Erstellung von statischen Indizes. –