public async Task HandleReference_ShouldCompleteTheIndexing() { // https://issues.hibernatingrhinos.com/issue/RavenDB-14506 const int batchSize = 128; using (var store = GetDocumentStore(new Options { ModifyDatabaseRecord = doc => { doc.Settings[RavenConfiguration.GetKey(x => x.Indexing.MapBatchSize)] = batchSize.ToString(); } })) { var index = new Companies_ByEmployeeLastName(); using (var session = store.OpenAsyncSession()) { var employees = Enumerable.Range(0, batchSize + 1) .Select(i => new Employee { Id = $"Employees/{i}" }) .ToArray(); var company = new Company { Name = "HR", EmployeesIds = employees.Select(e => e.Id).ToList() }; await session.StoreAsync(company); await session.SaveChangesAsync(); index.Execute(store); Indexes.WaitForIndexing(store); //Index disable store.Maintenance.Send(new DisableIndexOperation(index.IndexName)); foreach (var employee in employees) { employee.FirstName = "Changed"; await session.StoreAsync(employee); } await session.SaveChangesAsync(); //Index enable store.Maintenance.Send(new EnableIndexOperation(index.IndexName)); //Assert Indexes.WaitForIndexing(store, timeout: TimeSpan.FromSeconds(10)); } } }
public void BasicLoadDocumentsWithEnumerable() { using (var store = GetDocumentStore()) { new Companies_ByEmployeeLastName().Execute(store); using (var session = store.OpenSession()) { var employee1 = new Employee { LastName = "Doe" }; var employee2 = new Employee { LastName = "Gates" }; session.Store(employee1); session.Store(employee2); var company = new Company { Name = "HR", EmployeesIds = new List <string> { employee1.Id, employee2.Id } }; session.Store(company); session.SaveChanges(); } WaitForIndexing(store); using (var session = store.OpenSession()) { var companies = session.Query <Companies_ByEmployeeLastName.Result, Companies_ByEmployeeLastName>() .Where(x => x.LastName == "Gates") .OfType <Company>() .ToList(); Assert.Equal(1, companies.Count); Assert.Equal("HR", companies[0].Name); } } }