static void Main(string[] args) { Thread.CurrentThread.Name = "TEST"; var uow = new UnitOfWork(); var customerRepository = new CustomerRepository(uow); var orderRepository = new OrderRepository(uow); Console.WriteLine("SIMPLE CRUD TEST APP"); //FindAll TEST Console.WriteLine("FINDALL TEST"); Console.WriteLine("List of Customers:"); var customers = customerRepository.FindAll().ToList <Customer>(); for (var index = 0; index < customers.Count; index++) { Console.WriteLine(string.Format("{0}\t{1}", index + 1, customers[index].FullName)); } PressTo("CONTINUE"); //Update TEST Console.WriteLine("UPDATE TEST"); var customerEntity = customers[0]; Console.WriteLine(string.Format("Customer current FirstName: {0}", customerEntity.FirstName)); Console.WriteLine("ENTER Customer NEW FirstName: "); var newName = Console.ReadLine(); var oldName = customerEntity.FirstName; customerEntity.FirstName = newName; Console.WriteLine("Update data? (Y/N): "); var keyPressed = Console.ReadKey(true).Key; while (keyPressed != ConsoleKey.Y && keyPressed != ConsoleKey.N) { keyPressed = Console.ReadKey(true).Key; } if (keyPressed == ConsoleKey.Y) { customerRepository.Update(customerEntity); uow.Commit(); Console.WriteLine("Data updated!"); } else { customerEntity.FirstName = oldName; Console.WriteLine("Change reverted!"); } Console.WriteLine(string.Format("Customer Full Name: {0}", customerEntity.FullName)); PressTo("CONTINUE"); //Insert TEST Console.WriteLine("INSERT TEST"); Console.WriteLine("ENTER NEW Customer FirstName: "); var newFirstName = Console.ReadLine(); Console.WriteLine("ENTER NEW Customer LastName: "); var newLastName = Console.ReadLine(); customerEntity = Customer.Create(newFirstName, newLastName); customerRepository.Add(customerEntity); uow.Commit(); Console.WriteLine("NEW Customer CREATED!"); Console.WriteLine(""); Console.WriteLine("List of Customers:"); customers = customerRepository.FindAll().ToList <Customer>(); for (var index = 0; index < customers.Count; index++) { Console.WriteLine(string.Format("{0}\t{1}", index + 1, customers[index].FullName)); } PressTo("CONTINUE"); //Delete TEST Console.WriteLine("DELETE TEST"); Console.WriteLine("ENTER Customer's number to DELETE: "); int deleteIndex; while (!int.TryParse(Console.ReadLine(), out deleteIndex) || (deleteIndex < 0 || deleteIndex > customers.Count)) { Console.WriteLine("ENTER a valid Customer's number to DELETE: "); } customerEntity = customers[deleteIndex - 1]; customerRepository.Remove(customerEntity); uow.Commit(); Console.WriteLine(string.Format("Customer '{0}' was DELETED!", customerEntity.FullName)); Console.WriteLine(""); Console.WriteLine("List of Customers:"); customers = customerRepository.FindAll().ToList <Customer>(); for (var index = 0; index < customers.Count; index++) { Console.WriteLine(string.Format("{0}\t{1}", index + 1, customers[index].FullName)); } PressTo("CONTINUE"); //FindAll TEST [Orders] Console.WriteLine("FINDALL TEST [Orders]"); Console.WriteLine("Enter Customer's number to display the list of Orders:"); int customerIndex; while (!int.TryParse(Console.ReadLine(), out customerIndex) || (customerIndex < 0 || customerIndex > customers.Count)) { Console.WriteLine("ENTER a valid Customer's number: "); } customerEntity = customers[customerIndex - 1]; Console.WriteLine(string.Format("{0}'s ORDERS LIST:", customerEntity.FirstName)); var orders = orderRepository.FindAllBy(customerEntity.Id).ToList <Order>(); for (var index = 0; index < orders.Count; index++) { Console.WriteLine(string.Format("{0}\t{1}", index + 1, orders[index].OrderDate)); } PressTo("CONTINUE"); //FindAll TEST [Orders] with QueryObject Console.WriteLine("FINDALL TEST [Orders] with QueryObject"); Console.WriteLine("Enter Customer's FirstName to display the list of Orders:"); var customerFirstName = Console.ReadLine(); var query = new QueryObject(typeof(Customer)); query.AddCriteria(Criteria.Matches("FirstName", customerFirstName)); var customerByQueryObject = query.Execute(uow); query = new QueryObject(typeof(Order)); query.AddCriteria(Criteria.Matches("CustomerId", customerByQueryObject[0].Id.ToString())); var ordersByQueryObject = query.Execute(uow); Console.WriteLine(string.Format("{0}'s ORDERS LIST:", ((Customer)customerByQueryObject[0]).FirstName)); for (var index = 0; index < ordersByQueryObject.Count; index++) { Console.WriteLine(string.Format("{0}\t{1}", index + 1, ((Order)ordersByQueryObject[index]).OrderDate)); } PressTo("CONTINUE"); PressTo("EXIT"); }