/// <summary> /// Verify the provided <paramref name="mongoIndex"/> is defined and ready to go. /// </summary> protected virtual void VerifyIndex(MongoDbIndex <MongoDbEventData> mongoIndex) { IndexKeysDefinitionBuilder <MongoDbEventData> indexKeysBuilder = Builders <MongoDbEventData> .IndexKeys; IndexKeysDefinition <MongoDbEventData> indexKey = null; IList <Expression <Func <MongoDbEventData, object> > > selectors = mongoIndex.Selectors.ToList(); for (int i = 0; i < selectors.Count; i++) { Expression <Func <MongoDbEventData, object> > expression = selectors[i]; if (mongoIndex.IsAcending) { if (i == 0) { indexKey = indexKeysBuilder.Ascending(expression); } else { indexKey = indexKey.Ascending(expression); } } else { if (i == 0) { indexKey = indexKeysBuilder.Descending(expression); } else { indexKey = indexKey.Descending(expression); } } } bool throwExceptions; if (!bool.TryParse(ConfigurationManager.GetSetting("Cqrs.MongoDb.EventStore.ThrowExceptionsOnIndexPreparation"), out throwExceptions)) { throwExceptions = true; } try { MongoCollection.Indexes.CreateOne ( indexKey, new CreateIndexOptions { Unique = mongoIndex.IsUnique, Name = mongoIndex.Name } ); } catch { if (throwExceptions) { throw; } } }
protected virtual void VerifyIndex(MongoDbIndex <EventData> mongoIndex) { IndexKeysDefinitionBuilder <EventData> indexKeysBuilder = Builders <EventData> .IndexKeys; IndexKeysDefinition <EventData> indexKey = null; IList <Expression <Func <EventData, object> > > selectors = mongoIndex.Selectors.ToList(); for (int i = 0; i < selectors.Count; i++) { Expression <Func <EventData, object> > expression = selectors[i]; if (mongoIndex.IsAcending) { if (i == 0) { indexKey = indexKeysBuilder.Ascending(expression); } else { indexKey = indexKey.Ascending(expression); } } else { if (i == 0) { indexKey = indexKeysBuilder.Descending(expression); } else { indexKey = indexKey.Descending(expression); } } } MongoCollection.Indexes.CreateOne ( indexKey, new CreateIndexOptions { Unique = mongoIndex.IsUnique, Name = mongoIndex.Name } ); }