예제 #1
0
        public void AverageOrderAmountShouldBeCalculatedCorrectly()
        {
            using (var store = NewDocumentStore())
            {
                var ordersAverageAmount = new OrdersAverageAmount();
                ordersAverageAmount.Execute(store);

                store.DatabaseCommands.Put("Raven/IndexedProperties/" + ordersAverageAmount.IndexName,
                                           null,
                                           RavenJObject.FromObject(new IndexedPropertiesSetupDoc
                {
                    DocumentKey       = "CustomerId",
                    FieldNameMappings =
                    {
                        { "AverageOrderAmount", "AverageOrderAmount" }
                    }
                }),
                                           new RavenJObject());

                using (var session = store.OpenSession())
                {
                    session.Store(new Customer {
                        Id = "customers/1", Name = "Customer 1"
                    });
                    session.Store(new Customer {
                        Id = "customers/2", Name = "Customer 2"
                    });

                    session.Store(new Order {
                        Id = "orders/1", CustomerId = "customers/1", TotalAmount = 10
                    });
                    session.Store(new Order {
                        Id = "orders/2", CustomerId = "customers/1", TotalAmount = 5
                    });
                    session.Store(new Order {
                        Id = "orders/3", CustomerId = "customers/1", TotalAmount = 3
                    });

                    session.Store(new Order {
                        Id = "orders/4", CustomerId = "customers/2", TotalAmount = 1
                    });
                    session.Store(new Order {
                        Id = "orders/5", CustomerId = "customers/2", TotalAmount = 2
                    });

                    session.SaveChanges();
                }

                WaitForIndexing(store);

                using (var session = store.OpenSession())
                {
                    var customer1 = session.Load <Customer>("customers/1");
                    var customer2 = session.Load <Customer>("customers/2");

                    Assert.Equal(6m, customer1.AverageOrderAmount);
                    Assert.Equal(1.5m, customer2.AverageOrderAmount);
                }
            }
        }
예제 #2
0
        public void Sample()
        {
            using (var store = NewDocumentStore())
            {
                #region indexed_properties_0

                store.DatabaseCommands.CreateDatabase(new DatabaseDocument
                {
                    Id       = "ExampleDB",
                    Settings =
                    {
                        { "Raven/ActiveBundles", "IndexedProperties" }
                    }
                });

                #endregion

                #region indexed_properties_4

                var ordersAverageAmount = new OrdersAverageAmount();
                ordersAverageAmount.Execute(store);

                store.DatabaseCommands.Put("Raven/IndexedProperties/" + ordersAverageAmount.IndexName,
                                           null,
                                           RavenJObject.FromObject(new IndexedPropertiesSetupDoc
                {
                    DocumentKey       = "CustomerId",
                    FieldNameMappings =
                    {
                        { "AverageOrderAmount", "AverageOrderAmount" }
                    }
                }),
                                           new RavenJObject());

                #endregion

                #region indexed_properties_5

                using (var session = store.OpenSession())
                {
                    session.Store(new Customer {
                        Id = "customers/1", Name = "Customer 1"
                    });
                    session.Store(new Customer {
                        Id = "customers/2", Name = "Customer 2"
                    });

                    session.Store(new Order {
                        Id = "orders/1", CustomerId = "customers/1", TotalAmount = 10
                    });
                    session.Store(new Order {
                        Id = "orders/2", CustomerId = "customers/1", TotalAmount = 5
                    });
                    session.Store(new Order {
                        Id = "orders/3", CustomerId = "customers/1", TotalAmount = 3
                    });

                    session.Store(new Order {
                        Id = "orders/4", CustomerId = "customers/2", TotalAmount = 1
                    });
                    session.Store(new Order {
                        Id = "orders/5", CustomerId = "customers/2", TotalAmount = 3
                    });

                    session.SaveChanges();
                }

                #endregion

                #region indexed_properties_6

                using (var session = store.OpenSession())
                {
                    var customer1 = session.Load <Customer>("customers/1");                    // AverageOrderAmount is 6
                    var customer2 = session.Load <Customer>("customers/2");                    // AverageOrderAmount is 1.5
                }

                #endregion
            }
        }