static void Main(string[] args) { using (var db = new Northwind()) { using (IDbContextTransaction t = db.Database.BeginTransaction()) { WriteLine($"Transaction started with this isolation level: { t.GetDbTransaction().IsolationLevel}"); //var loggerFactory = db.GetService<ILoggerFactory>(); //loggerFactory.AddProvider(new ConsoleLogProvider()); WriteLine("List of categories and the number of products:"); IQueryable <Category> cats; //db.Categories;//.Include(c => c.Products); Write("Enable eager loading? (Y/N): "); bool eagerloading = (ReadKey().Key == ConsoleKey.Y); bool explicitloading = false; WriteLine(); if (eagerloading) { cats = db.Categories.Include(c => c.Products); } else { cats = db.Categories; Write("Enable explicit loading? (Y/N): "); explicitloading = (ReadKey().Key == ConsoleKey.Y); WriteLine(); } foreach (Category c in cats) { if (explicitloading) { Write($"Explicitly load products for {c.CategoryName}? (Y/N): "); if (ReadKey().Key == ConsoleKey.Y) { var products = db.Entry(c).Collection(c2 => c2.Products); if (!products.IsLoaded) { products.Load(); } } WriteLine(); } WriteLine( $"{c.CategoryName} has {c.Products.Count} products."); } WriteLine("List of products that cost more than a given price with most expensive first."); string input; decimal price; do { Write("Enter a product price: "); input = ReadLine(); } while (!decimal.TryParse(input, out price)); IQueryable <Product> prods = db.Products .Where(product => product.UnitPrice > price) .OrderByDescending(product => product.UnitPrice); foreach (Product item in prods) { WriteLine($"{item.ProductID}: {item.ProductName} costs {item.UnitPrice:$#,##0.00}"); } var newProduct = new Product { CategoryID = 6, // Meat & Poultry ProductName = "Bob's Burger", UnitPrice = 500M }; // 새 product를 추가한다. db.Products.Add(newProduct); // 변경 사항을 데이터베이스에 저장한다. db.SaveChanges(); foreach (var item in db.Products) { WriteLine($"{item.ProductID}: {item.ProductName} costs {item.UnitPrice:$#,##0.00}"); } Product updateProduct = db.Products.First( p => p.ProductName.StartsWith("Bob")); updateProduct.UnitPrice += 20M; db.SaveChanges(); foreach (var item in db.Products) { WriteLine($"{item.ProductID}: {item.ProductName} costs {item.UnitPrice:$#,##0.00}"); } Product deleteProduct = db.Products.First(p => p.ProductName.StartsWith("Bob")); db.Products.Remove(deleteProduct); db.SaveChanges(); foreach (var item in db.Products) { WriteLine($"{item.ProductID}: {item.ProductName} costs {item.UnitPrice:$#,##0.00}"); } t.Commit(); } } }
static void Main(string[] args) { //Console.WriteLine("Hello World!"); using (var db = new Northwind()) { // 트랜젝션 처리 using (IDbContextTransaction t = db.Database.BeginTransaction()) { WriteLine($"Transaction started with this isolation level: {t.GetDbTransaction().IsolationLevel}"); // 로그처리 //var loggerFactory = db.GetService<ILoggerFactory>(); //loggerFactory.AddProvider(new ConsoleLogProvider()); WriteLine("List of categories and the number of products:"); IQueryable <Category> cats = db.Categories.Include(c => c.Products); foreach (Category c in cats) { WriteLine($"{c.CategoryName} has {c.Products.Count} products."); } WriteLine("List of products that cost more than a given price with most expensive first."); string input; decimal price; do { Write("Enter a product price:"); input = ReadLine(); }while(!decimal.TryParse(input, out price)); IQueryable <Product> prods = db.Products .Where(product => product.UnitPrice > price) .OrderByDescending(product => product.UnitPrice); foreach (Product item in prods) { WriteLine($"{item.ProductID}: {item.ProductName} costs {item.UnitPrice:$#,##0.00}"); } /* * var newProduct = new Product{ * CategoryID = 6, * ProductName = "Bob's burger", * UnitPrice = 500M * }; * * // 새 product를 추가한다. * db.Products.Add(newProduct); * * // 변경사항을 데이터베이스에 저장한다. * db.SaveChanges(); * * //foreach(var item in db.Products) * //{ * // WriteLine($"{item.ProductID}: {item.ProductName} costs {item.UnitPrice:$#,##0.00}"); * //} * * * /* * // 엔티티 업데이트 * Product updateProduct = db.Products.First( * p => p.ProductName.StartsWith("Bob") * ); * updateProduct.UnitPrice += 20M; * db.SaveChanges(); * foreach(var item in db.Products) * { * WriteLine($"{item.ProductID}: {item.ProductName} costs {item.UnitPrice:$#,##0.00}"); * } */ /* * // 엔티티 삭제 * Product deleteProduct = db.Products.First( * p => p.ProductName.StartsWith("Bob") * ); * db.Products.Remove(deleteProduct); * db.SaveChanges(); * foreach(var item in db.Products) * { * WriteLine($"{item.ProductID}: {item.ProductName} costs {item.UnitPrice:$#,##0.00}"); * } * //*/ foreach (var item in db.Products) { WriteLine($"{item.ProductID}: {item.ProductName} costs {item.UnitPrice:$#,##0.00}"); } t.Commit(); } } }