Пример #1
0
        static void Main(string[] args)
        {
            using (var context = new PRSdbContext()) { // using statement isn't necessary, but it will automatically dispose of this once it's finished. Efficiency.
                //var request = new Requests() {
                //    Id = 0,
                //    Description = "Another new request",
                //    Justification = "Moreee data in the table",
                //    RejectionReason = null,
                //    DeliveryMode = "Pickup",
                //    Status = "NEW",
                //    Total = 0,
                //    UserId = context.Users.SingleOrDefault(u => u.Username.Equals("NotAGiraffe")).Id
                //};
                //context.Requests.Add(request);

                //var request = new Requests() { Id = 3, Description = "Changed again" };
                //var dbRequest = context.Requests.Find(request.Id);
                //dbRequest.Description = request.Description;

                ////dbRequest = context.Requests.Find(3);
                ////context.Requests.Remove(dbRequest);
                //context.SaveChanges();

                //request, status, total, then line items for name qty price


                var req3 = context.Requests.Find(3);

                req3.Total = req3.RequestLines.Sum(l => l.Product.Price * l.Quantity);
                context.SaveChanges();

                Console.WriteLine($"{req3.Description}, {req3.Status}, {req3.Total.ToString("C")}");
                req3.RequestLines.ToList().ForEach(rl => {
                    Console.WriteLine($"{rl.Product.Name,-10} {rl.Quantity,5} " +
                                      $"{rl.Product.Price.ToString("C"),10} " +
                                      $"{(rl.Product.Price * rl.Quantity).ToString("C"),11}");
                });
                Console.WriteLine("");

                var allreq = (from r in context.Requests.ToList()
                              select r.Total).Sum();

                //var total = context.Requests.Sum(r => r.Total); // alternative with lambda syntax for above line

                Console.WriteLine("~~~~");
                Console.WriteLine($"Sum of request cost: {allreq.ToString("C")}");
                Console.WriteLine("~~~~");



                var vendors = context.Vendors.ToList(); // run a quick-watch on this and it shows assoc products as well

                vendors.ForEach(v => Console.WriteLine($"{v.Code} {v.Name}"));
                Console.WriteLine();


                var vendorsPK = context.Vendors.Find(1); // searches PK value in cached data first before going to DB, returns null if not found
                Console.WriteLine($"{vendorsPK.Code} {vendorsPK.Name}");
                Console.WriteLine();



                //var users = context.Users.ToList();
                var users = from u in context.Users.ToList()
                            where u.Username.Contains("r") || u.Username.Contains("n")
                            select u;

                foreach (var user in users)
                {
                    Console.WriteLine($"{user.Username} is {user.Firstname} {user.Lastname}");
                }
            }
        }