Beispiel #1
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_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
                }
            }
        }
Beispiel #2
0
        public TypeSpecific()
        {
            var store = new DocumentStore();

            #region eployees_custom_convention
            store.Conventions.RegisterIdConvention <Employee>(
                (dbname, commands, employee) => string.Format("employees/{0}/{1}", employee.LastName, employee.FirstName));
            #endregion

            #region eployees_custom_async_convention
            store.Conventions.RegisterAsyncIdConvention <Employee>(
                (dbname, commands, employee) => new CompletedTask <string>(
                    string.Format("employees/{0}/{1}", employee.LastName, employee.FirstName)));
            #endregion

            #region eployees_custom_convention_example
            using (IDocumentSession session = store.OpenSession())
            {
                session.Store(new Employee
                {
                    FirstName = "James",
                    LastName  = "Bond"
                });

                session.SaveChanges();
            }
            #endregion

            #region eployees_custom_convention_inheritance
            using (IDocumentSession session = store.OpenSession())
            {
                session.Store(new Employee                 // employees/Smith/Adam
                {
                    FirstName = "Adam",
                    LastName  = "Smith"
                });

                session.Store(new EmployeeManager                 // employees/Jones/David
                {
                    FirstName = "David",
                    LastName  = "Jones"
                });

                session.SaveChanges();
            }
            #endregion


            #region custom_convention_inheritance_2
            store.Conventions.RegisterIdConvention <Employee>(
                (dbname, commands, employee) => string.Format("employees/{0}/{1}", employee.LastName, employee.FirstName));

            store.Conventions.RegisterIdConvention <EmployeeManager>(
                (dbname, commands, employee) => string.Format("managers/{0}/{1}", employee.LastName, employee.FirstName));

            using (IDocumentSession session = store.OpenSession())
            {
                session.Store(new Employee                 // employees/Smith/Adam
                {
                    FirstName = "Adam",
                    LastName  = "Smith"
                });

                session.Store(new EmployeeManager                 // managers/Jones/David
                {
                    FirstName = "David",
                    LastName  = "Jones"
                });

                session.SaveChanges();
            }
            #endregion

            #region id_generation_on_load_1
            store.Conventions.RegisterIdConvention <EntityWithIntegerId>(
                (databaseName, commands, entity) => "ewi/" + entity.Id);
            #endregion

            #region id_generation_on_load_2
            store.Conventions.RegisterIdLoadConvention <EntityWithIntegerId>(id => "ewi/" + id);

            using (IDocumentSession session = store.OpenSession())
            {
                EntityWithIntegerId entity = session.Load <EntityWithIntegerId>(1);                // will load 'ewi/1' document
            }
            #endregion
        }