示例#1
0
        public void CanUseLoadDocumentToIndexReferencedDocs()
        {
            using (var store = GetDocumentStore())
            {
                var postsByContent = new Posts_ByContent();
                postsByContent.Execute(store);

                var companiesWithEmployees = new Companies_WithReferencedEmployees();
                companiesWithEmployees.Execute(store);

                var companiesWithEmployeesTransformer = new CompanyEmployeesTransformer();
                companiesWithEmployeesTransformer.Execute(store);

                using (var session = store.OpenSession())
                {
                    for (int i = 0; i < 10; i++)
                    {
                        session.Store(new Post
                        {
                            Id = "posts/" + i
                        });

                        session.Store(new PostContent
                        {
                            Id = "posts/" + i + "/content",
                            Text = i % 2 == 0 ? "HTML 5" : "Javascript"
                        });

                        session.Store(new Employee
                        {
                            Id = "employees/" + i,
                            LastName = "Last Name " + i
                        });
                    }

                    session.Store(new Company { EmployeesIds = new List<string>() { "employees/1", "employees/2", "employees/3" } });
                    session.SaveChanges();
                    WaitForIndexing(store);

                    var html5PostsQuery = session.Advanced.DocumentQuery<Post>(postsByContent.IndexName).WhereEquals("Text", "HTML 5");
                    var javascriptPostsQuery = session.Advanced.DocumentQuery<Post>(postsByContent.IndexName).WhereEquals("Text", "Javascript");

                    Assert.Equal(5, html5PostsQuery.ToList().Count);
                    Assert.Equal(5, javascriptPostsQuery.ToList().Count);


                    var companies = session.Advanced.DocumentQuery<Companies_WithReferencedEmployees.CompanyEmployees>(companiesWithEmployees.IndexName)
                        .SetResultTransformer(companiesWithEmployeesTransformer.TransformerName)
                        .ToArray();

                    Assert.Equal(1, companies.Length);
                    Assert.Equal("Last Name 1", companies[0].Employees[0]);
                    Assert.Equal("Last Name 2", companies[0].Employees[1]);
                    Assert.Equal("Last Name 3", companies[0].Employees[2]);
                }
            }
        }
示例#2
0
        public void CanUseLoadDocumentToIndexReferencedDocs()
        {
            using (var store = GetDocumentStore())
            {
                var postsByContent = new Posts_ByContent();
                postsByContent.Execute(store);

                var companiesWithEmployees = new Companies_WithReferencedEmployees();
                companiesWithEmployees.Execute(store);

                var companiesWithEmployeesTransformer = new CompanyEmployeesTransformer();
                companiesWithEmployeesTransformer.Execute(store);

                using (var session = store.OpenSession())
                {
                    for (int i = 0; i < 10; i++)
                    {
                        session.Store(new Post
                        {
                            Id = "posts/" + i
                        });

                        session.Store(new PostContent
                        {
                            Id   = "posts/" + i + "/content",
                            Text = i % 2 == 0 ? "HTML 5" : "Javascript"
                        });

                        session.Store(new Employee
                        {
                            Id       = "employees/" + i,
                            LastName = "Last Name " + i
                        });
                    }

                    session.Store(new Company {
                        EmployeesIds = new List <string>()
                        {
                            "employees/1", "employees/2", "employees/3"
                        }
                    });
                    session.SaveChanges();
                    WaitForIndexing(store);

                    var html5PostsQuery      = session.Advanced.DocumentQuery <Post>(postsByContent.IndexName).WhereEquals("Text", "HTML 5");
                    var javascriptPostsQuery = session.Advanced.DocumentQuery <Post>(postsByContent.IndexName).WhereEquals("Text", "Javascript");

                    Assert.Equal(5, html5PostsQuery.ToList().Count);
                    Assert.Equal(5, javascriptPostsQuery.ToList().Count);


                    var companies = session.Advanced.DocumentQuery <Companies_WithReferencedEmployees.CompanyEmployees>(companiesWithEmployees.IndexName)
                                    .SetResultTransformer(companiesWithEmployeesTransformer.TransformerName)
                                    .ToArray();

                    Assert.Equal(1, companies.Length);
                    Assert.Equal("Last Name 1", companies[0].Employees[0]);
                    Assert.Equal("Last Name 2", companies[0].Employees[1]);
                    Assert.Equal("Last Name 3", companies[0].Employees[2]);
                }
            }
        }
        public void BasicTransformerWithLoadDocuments()
        {
            using (var store = GetDocumentStore())
            {
                var transformer = new CompanyEmployeesTransformer();
                transformer.Execute(store);

                var transformerDefinition = transformer.CreateTransformerDefinition();
                var serverDefinition      = store.DatabaseCommands.GetTransformer(transformer.TransformerName);

                Assert.True(transformerDefinition.Equals(serverDefinition));

                using (var session = store.OpenSession())
                {
                    var employee1 = new Employee
                    {
                        LastName = "John"
                    };

                    var employee2 = new Employee
                    {
                        LastName = "Bob"
                    };

                    session.Store(employee1);
                    session.Store(employee2);

                    session.Store(new Company
                    {
                        Name         = "Amazing",
                        EmployeesIds = new List <string> {
                            employee1.Id, employee2.Id
                        }
                    });

                    session.Store(new Company
                    {
                        Name         = "Brilliant",
                        EmployeesIds = new List <string> {
                            employee2.Id
                        }
                    });

                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    var result = session.Load <CompanyEmployeesTransformer.Result>("companies/1", typeof(CompanyEmployeesTransformer));

                    Assert.Equal("Amazing", result.Name);
                    Assert.True(result.Employees.SequenceEqual(new[] { "John", "Bob" }));

                    var results = session.Load <CompanyEmployeesTransformer.Result>(new[] { "companies/1", "companies/2" }, typeof(CompanyEmployeesTransformer));

                    Assert.Equal(2, results.Length);

                    Assert.True(results[0].Employees.SequenceEqual(new[] { "John", "Bob" }));
                    Assert.Equal("Amazing", results[0].Name);

                    Assert.True(results[1].Employees.SequenceEqual(new[] { "Bob" }));
                    Assert.Equal("Brilliant", results[1].Name);
                }
            }
        }