static int Main(string[] args) { // Korzystamy z bloku using () {}, by upewnić się, że wraz z zakończeniem bloku zostanie usunięty // stworzony na potrzeby tego bloku kontekst do bazy danych. Za każdym razem gdy będziemy chcieli // zawartość bazy danych lub dostać się do zasobów w niej zawartych powinniśmy tworzyć nowy kontekst // W tym miejscu należy zaznaczyć, że nie będzie to błąd ani problem wydajnościowy, z powodu ciągłego // rozłączania się z bazą i ponowniego łączenia, ponieważ połączenia do bazy danych w większości są // wrzucane do wspóldzielonej puli, każde takie połączenie może być "za chwilę" ponownie użyte. // // Zobacz więcej: // > using () {} - https://www.dotnetperls.com/using // > connection pooling - https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql-server-connection-pooling using (var dbCtx = new DefaultAppDbConnection()) { bool closeApp = false; while (closeApp == false) { try { switch (Menu()) { case 1: // Wyświetlanie wszystkich wpisów Console.Clear(); PrintAllDishes(unitOfWork.DishRepository.GetAll()); break; case 2: // Create - Dodawanie nowego wpisu InsertNewManualDish(unitOfWork.DishRepository); unitOfWork.Save(); break; case 3: // Pobieranie konkretnego wpisu Console.WriteLine(PrintDish(FindDishByName(unitOfWork.DishRepository))); break; case 4: // Aktualizacja wpisu Console.Clear(); EditDish(FindDishByName(unitOfWork.DishRepository)); unitOfWork.Save(); Console.WriteLine("Zaktualizowano wpis!"); break; case 5: // Usuwanie wpisu Console.Clear(); RemoveDish(unitOfWork.DishRepository); unitOfWork.Save(); Console.WriteLine("Usunięto wpis!"); break; case 0: return(0); } } catch (Exception e) { if (e is InvalidOperationException || e is ArgumentNullException) { Console.WriteLine("Uwaga! Poważny błąd: "); Console.WriteLine(e.Message); Console.Write("\n\nCzy wyświetlić stack trace? [y/n]: "); if (Console.ReadLine().ToUpper() == "Y") { Console.WriteLine(e.StackTrace); } } else { throw e; } } finally { Console.Write("\n\nWcisnij dowolny klawisz by wrócić do głównego menu!"); Console.ReadKey(); } } return(0); } }