示例#1
0
        public void CanUseTransformerInStreamDocs_Session()
        {
            using (var store = NewRemoteDocumentStore())
            {
                using (var session = store.OpenSession())
                {
                    session.Store(new Person {
                        Name = "John"
                    });
                    session.Store(new Person {
                        Name = "George"
                    });

                    session.SaveChanges();
                }

                var transformer = new SimpleTransformer();
                transformer.Execute(store);

                using (var session = store.OpenSession())
                {
                    using (var enumerator = session.Advanced.Stream <SimpleTransformer.Result>("people/", transformer: transformer.TransformerName, transformerParameters: new Dictionary <string, RavenJToken> {
                        { "Name", "Test" }
                    }))
                    {
                        var count = 0;
                        while (enumerator.MoveNext())
                        {
                            var result = enumerator.Current;

                            Assert.Equal("Test", result.Document.Name);

                            count++;
                        }

                        Assert.Equal(2, count);
                    }

                    using (var enumerator = session.Advanced.Stream <SimpleTransformer.Result>(Etag.Empty, transformer: transformer.TransformerName, transformerParameters: new Dictionary <string, RavenJToken> {
                        { "Name", "Test" }
                    }))
                    {
                        var count = 0;
                        while (enumerator.MoveNext())
                        {
                            var result = enumerator.Current;

                            Assert.Equal("Test", result.Document.Name);

                            count++;
                        }

                        Assert.Equal(2 + 1, count); // +1 for HiLo
                    }
                }
            }
        }
示例#2
0
文件: Stream.cs 项目: ravendb/docs
        public void StreamWithTransformer()
        {
            var store = new DocumentStore();

            #region stream_3

            var transformer = new SimpleTransformer();
            transformer.Execute(store);

            using (IEnumerator<RavenJObject> enumerator = store.DatabaseCommands.StreamDocs(startsWith: "people/", transformer: transformer.TransformerName, transformerParameters: new Dictionary<string, RavenJToken> {{"Name", "Bill"}}))
            {
                while (enumerator.MoveNext())
                {
                    RavenJObject result = enumerator.Current;
                    string name = result.Value<string>("Name");
                    Assert.Equal("Bill", name); // Should be true
                }
            }
            #endregion
        }
示例#3
0
        public void StreamWithTransformer()
        {
            var store = new DocumentStore();

            #region stream_3

            var transformer = new SimpleTransformer();
            transformer.Execute(store);

            using (IEnumerator <RavenJObject> enumerator = store.DatabaseCommands.StreamDocs(startsWith: "people/", transformer: transformer.TransformerName, transformerParameters: new Dictionary <string, RavenJToken> {
                { "Name", "Bill" }
            }))
            {
                while (enumerator.MoveNext())
                {
                    RavenJObject result = enumerator.Current;
                    string       name   = result.Value <string>("Name");
                    Assert.Equal("Bill", name); // Should be true
                }
            }
            #endregion
        }
示例#4
0
        public LoadingEntities()
        {
            using (var store = new DocumentStore())
            {
                using (var session = store.OpenSession())
                {
                    #region loading_entities_1_1
                    Employee employee = session.Load <Employee>("employees/1");
                    #endregion
                }

                using (var session = store.OpenSession())
                {
                    #region loading_entities_1_2
                    // loading 'employees/1'
                    // and transforming result using 'Employees_NoLastName' transformer
                    // which returns 'LastName' as 'null'
                    Employee employee = session.Load <Employees_NoLastName, Employee>("employees/1");
                    #endregion
                }

                using (var session = store.OpenSession())
                {
                    #region loading_entities_1_3
                    EntityWithIntegerId entity = session.Load <EntityWithIntegerId>(1);
                    #endregion
                }

                using (var session = store.OpenSession())
                {
                    #region loading_entities_1_4
                    Employee employee = session.Load <Employee>(1);
                    #endregion
                }


                using (var session = store.OpenSession())
                {
                    #region loading_entities_2_1
                    // loading 'products/1'
                    // including document found in 'Supplier' property
                    Product product = session
                                      .Include <Product>(x => x.Supplier)
                                      .Load <Product>("products/1");

                    Supplier supplier = session.Load <Supplier>(product.Supplier);                    // this will not make server call
                    #endregion
                }

                using (var session = store.OpenSession())
                {
                    #region loading_entities_2_2
                    // loading 'products/1'
                    // including document found in 'Supplier' property
                    Product product = session
                                      .Include("Supplier")
                                      .Load <Product>("products/1");

                    Supplier supplier = session.Load <Supplier>(product.Supplier);                    // this will not make server call
                    #endregion
                }

                using (var session = store.OpenSession())
                {
                    #region loading_entities_2_3
                    // loading 'products/1'
                    // including document found in 'Supplier' property
                    // transforming loaded product according to Products_Transformer
                    Product product = session
                                      .Include <Product>(x => x.Supplier)
                                      .Load <Products_Transformer, Product>("products/1");

                    Supplier supplier = session.Load <Supplier>(product.Supplier);                    // this will not make server call
                    #endregion
                }

                using (var session = store.OpenSession())
                {
                    #region loading_entities_3_1
                    Employee[] employees = session.Load <Employee>(new List <string> {
                        "employees/1", "employees/2"
                    });
                    Employee employee1 = employees[0];
                    Employee employee2 = employees[1];
                    #endregion
                }

                using (var session = store.OpenSession())
                {
                    #region loading_entities_3_2
                    // loading 'employees/1' and 'employees/2'
                    // and transforming results using 'Employees_NoLastName' transformer
                    // which returns 'LastName' as 'null'
                    Employee[] employees = session
                                           .Load <Employees_NoLastName, Employee>(new List <string> {
                        "employees/1", "employees/2"
                    });
                    Employee employee1 = employees[0];
                    Employee employee2 = employees[1];
                    #endregion
                }

                using (var session = store.OpenSession())
                {
                    #region loading_entities_4_1
                    // return up to 128 entities with Id that starts with 'employees'
                    Employee[] result = session
                                        .Advanced
                                        .LoadStartingWith <Employee>("employees", null, 0, 128);
                    #endregion
                }

                using (var session = store.OpenSession())
                {
                    #region loading_entities_4_2
                    // return up to 128 entities with Id that starts with 'employees/'
                    // and rest of the key begins with "1" or "2" e.g. employees/10, employees/25
                    Employee[] result = session
                                        .Advanced
                                        .LoadStartingWith <Employee>("employees/", "1*|2*", 0, 128);
                    #endregion
                }

                using (var session = store.OpenSession())
                {
                    #region loading_entities_4_3
                    // return up to 128 entities with Id that starts with 'employees/'
                    // and rest of the Id have length of 3, begins and ends with "1"
                    // and contains any character at 2nd position e.g. employees/101, employees/1B1
                    // and transform results using 'Employees_NoLastName' transformer
                    Employee[] result = session
                                        .Advanced
                                        .LoadStartingWith <Employees_NoLastName, Employee>("employees/", "1?1", 0, 128);
                    #endregion
                }

                using (var session = store.OpenSession())
                {
                    #region loading_entities_5_1
                    IEnumerator <StreamResult <Employee> > enumerator = session.Advanced.Stream <Employee>("employees/");
                    while (enumerator.MoveNext())
                    {
                        StreamResult <Employee> employee = enumerator.Current;
                    }
                    #endregion
                }

                using (var session = store.OpenSession())
                {
                    #region loading_entities_5_2
                    var transformer = new SimpleTransformer();
                    transformer.Execute(store);

                    using (IEnumerator <StreamResult <SimpleTransformer.Result> > enumerator = session.Advanced.Stream <SimpleTransformer.Result>("people/", transformer: transformer.TransformerName, transformerParameters: new Dictionary <string, RavenJToken> {
                        { "Name", "Bill" }
                    }))
                    {
                        while (enumerator.MoveNext())
                        {
                            StreamResult <SimpleTransformer.Result> result = enumerator.Current;
                            string name = result.Document.Name;
                            Assert.Equal("Bill", name); // Should be true
                        }
                    }
                    #endregion
                }

                using (var session = store.OpenSession())
                {
                    #region loading_entities_6_1
                    bool     isLoaded = session.Advanced.IsLoaded("employees/1");            // false
                    Employee employee = session.Load <Employee>("employees/1");
                    isLoaded = session.Advanced.IsLoaded("employees/1");                     // true
                    #endregion
                }
            }
        }