Beispiel #1
0
 public static void AddEmployeesToStore(Store store, params Employee[] employees)
 {
     foreach (var employee in employees)
     {
         store.AddEmployee(employee);
     }
 }
Beispiel #2
0
 public static void AddProductsToStore(Store store, params Product[] products)
 {
     foreach (var product in products)
     {
         store.AddProduct(product);
     }
 }
Beispiel #3
0
        private static void Main()
        {
            // create our NHibernate session factory
            var sessionFactory = CreateSessionFactory();

            using (var session = sessionFactory.OpenSession())
            {
                // populate the database
                using (var transaction = session.BeginTransaction())
                {
                    // create a couple of Stores each with some Products and Employees
                    var barginBasin = new Store {Name = "Bargin Basin"};
                    var superMart = new Store {Name = "SuperMart"};

                    var potatoes = new Product {Name = "Potatoes", Price = 3.60};
                    var fish = new Product {Name = "Fish", Price = 4.49};
                    var milk = new Product {Name = "Milk", Price = 0.79};
                    var bread = new Product {Name = "Bread", Price = 1.29};
                    var cheese = new Product {Name = "Cheese", Price = 2.10};
                    var waffles = new Product {Name = "Waffles", Price = 2.41};

                    var daisy = new Employee {FirstName = "Daisy", LastName = "Harrison"};
                    var jack = new Employee {FirstName = "Jack", LastName = "Torrance"};
                    var sue = new Employee {FirstName = "Sue", LastName = "Walkters"};
                    var bill = new Employee {FirstName = "Bill", LastName = "Taft"};
                    var joan = new Employee {FirstName = "Joan", LastName = "Pope"};

                    // add products to the stores, there's some crossover in the products in each
                    // store, because the store-product relationship is many-to-many
                    AddProductsToStore(barginBasin, potatoes, fish, milk, bread, cheese);
                    AddProductsToStore(superMart, bread, cheese, waffles);

                    // add employees to the stores, this relationship is a one-to-many, so one
                    // employee can only work at one store at a time
                    AddEmployeesToStore(barginBasin, daisy, jack, sue);
                    AddEmployeesToStore(superMart, bill, joan);

                    // save both stores, this saves everything else via cascading
                    session.SaveOrUpdate(barginBasin);
                    session.SaveOrUpdate(superMart);

                    transaction.Commit();
                }
            }

            using (var session = sessionFactory.OpenSession())
            {
                // retreive all stores and display them
                using (session.BeginTransaction())
                {
                    var stores = session.CreateCriteria(typeof (Store))
                        .List<Store>();

                    foreach (var store in stores)
                    {
                        WriteStorePretty(store);
                    }
                }

                Console.WriteLine("Query String: " + session.GetNamedQuery("store_query").QueryString);
            }

            Console.ReadKey();
        }
Beispiel #4
0
        private static void WriteStorePretty(Store store)
        {
            Console.WriteLine(store.Name);
            Console.WriteLine("  Products:");

            foreach (var product in store.Products)
            {
                Console.WriteLine("    " + product.Name);
            }

            Console.WriteLine("  Staff:");

            foreach (var employee in store.Staff)
            {
                Console.WriteLine("    " + employee.FirstName + " " + employee.LastName);
            }

            Console.WriteLine();
        }