Пример #1
0
        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));
                }
            }
        }
Пример #2
0
        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);
                }
            }
        }