public static void AddEmployeesToStore(Store store, params Employee[] employees) { foreach (var employee in employees) { store.AddEmployee(employee); } }
public static void AddProductsToStore(Store store, params Product[] products) { foreach (var product in products) { store.AddProduct(product); } }
private static void Main(String[] args) { var sessionFactory = CreateSessionFactory(); using (var session = sessionFactory.OpenSession()) { 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", PhoneNumbers = new List<PhoneNumber>() { new PhoneNumber("343","5452456"), new PhoneNumber("545","7896789"), new PhoneNumber("876","345345767876") }}; var joan = new Employee {FirstName = "Joan", LastName = "Pope", PhoneNumbers = new List<PhoneNumber>() { new PhoneNumber("615","3243243"), new PhoneNumber("615","4565466"), new PhoneNumber("615","3452343") }}; Console.WriteLine(joan.PhoneNumbers.First().fullNumber); // 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(); } // 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.ReadKey(); } }
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(); }