예제 #1
0
        private static void TransactionTest()
        {
            var station1 = new Station
            {
                Symbol   = "ST010",
                Name     = "PKS",
                Address  = "Autobusowa",
                Capacity = 10,
                Location = new Location {
                    Latitude = 52.01, Longitude = 23.05, Altitude = 0
                },
                CreateDate = DateTime.Now,
            };

            var station2 = new Station
            {
                Symbol   = "ST011",
                Name     = "Uniwerek",
                Address  = "Akademicka",
                Capacity = 10,
                Location = new Location {
                    Latitude = 52.01, Longitude = 23.05, Altitude = 0
                },
                CreateDate = DateTime.Now,
            };


            using (var context = new RentalBikesContext())
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        context.Stations.Add(station1);

                        context.SaveChanges();

                        context.Stations.Add(station2);

                        context.SaveChanges();

                        transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                    }
                }
        }
예제 #2
0
        private static void AddPeopleTest()
        {
            var people = new List <Person>
            {
                new Man {
                    FirstName = "Marcin",
                    LastName  = "Sulecki",
                    BirthDate = DateTime.Today,
                    Hobby     = "fizyka"
                },

                new Woman
                {
                    FirstName  = "Kasia",
                    LastName   = "Sulecka",
                    BirthDate  = DateTime.Today,
                    LikesColor = "Green"
                }
            };

            using (var context = new RentalBikesContext())
            {
                context.Persons.AddRange(people);

                context.SaveChanges();
            }
        }
예제 #3
0
        private static void AddBikeTest()
        {
            var bike = new Bike
            {
                Number         = "R001",
                BikeType       = BikeType.Town,
                Color          = "Green",
                ProductionYear = 2016,
                Size           = "16",
                IsActive       = true
            };

            var scooter = new Scooter
            {
                Number         = "S001",
                ProductionYear = 2010,
                Capacity       = 250,
                IsActive       = true
            };

            using (var context = new RentalBikesContext())
            {
                context.Vehicles.Add(bike);
                context.Vehicles.Add(scooter);

                context.SaveChanges();
            }
        }
예제 #4
0
        private static void MultiUserTest()
        {
            Console.WriteLine("Podaj nazwe");

            var name = Console.ReadLine();

            using (var context = new RentalBikesContext())
            {
                var station = context.Stations.Find(3);

                station.Name = name;

                Console.WriteLine("Press any key");

                Console.ReadKey();

                try
                {
                    context.SaveChanges();
                }
                catch (DbUpdateConcurrencyException e)
                {
                    Console.WriteLine(e.Message);

                    Console.ReadLine();
                }
            }
        }
예제 #5
0
        private static void FindClosestBikeTest()
        {
            var myLocation = DbGeography.FromText("POINT (52.10 21.05)");


            using (var context = new RentalBikesContext())
            {
                var bikes = context.Vehicles.OfType <Bike>()
                            .ToList();

                var latitude = 52.00;

                foreach (var item in bikes)
                {
                    var wkt = string.Format("POINT ({0} 21.05)", latitude.ToString(CultureInfo.InvariantCulture));

                    item.Location = DbGeography.FromText(wkt);

                    latitude = latitude + 0.2;
                }

                context.SaveChanges();


                var bike = context.Vehicles.OfType <Bike>()
                           .OrderBy(v => v.Location.Distance(myLocation))
                           .FirstOrDefault();


                var distance = bike.Location.Distance(myLocation);

                Console.WriteLine(distance);
            }
        }
예제 #6
0
        private static void UpdateTest()
        {
            using (var context = new RentalBikesContext())
            {
                var customer = context.Customers
                               .First(p => p.Identifier == "848484730");

                customer.PhoneNumber = "777-777-777";

                context.SaveChanges();
            }
        }
예제 #7
0
        private static void RemoveEmployeeFromProjectTest()
        {
            using (var context = new RentalBikesContext())
            {
                var project = context.Projects
                              .Include(p => p.Employees).First();

                project.Employees.Remove(project.Employees.First());

                context.SaveChanges();
            }
        }
예제 #8
0
        private static void AddTest()
        {
            using (var context = new RentalBikesContext())
            {
                var customer = new Customer
                {
                    FirstName   = "Bartek",
                    LastName    = "Sulecki",
                    Identifier  = "47437373",
                    PhoneNumber = "555-666-777"
                };

                Console.WriteLine(context.Entry(customer).State);

                context.Customers.Add(customer);

                Console.WriteLine(context.Entry(customer).State);

                context.SaveChanges();

                Console.WriteLine(context.Entry(customer).State);

                customer.PhoneNumber = "444-555-666";
                customer.Identifier  = "99999999";

                Console.WriteLine(context.Entry(customer).State);

                context.SaveChanges();

                Console.WriteLine(context.Entry(customer).State);

                context.Customers.Remove(customer);

                Console.WriteLine(context.Entry(customer).State);

                context.SaveChanges();

                Console.WriteLine(context.Entry(customer).State);
            }
        }
예제 #9
0
        private static void DistributedTransacationTest()
        {
            var station1 = new Station
            {
                Symbol   = "ST010",
                Name     = "PKS",
                Address  = "Autobusowa",
                Capacity = 10,
                Location = new Location {
                    Latitude = 52.01, Longitude = 23.05, Altitude = 0
                },
                CreateDate = DateTime.Now,
            };

            var station2 = new Station
            {
                Symbol   = "ST011",
                Name     = "Uniwerek",
                Address  = "Akademicka",
                Capacity = 10,
                Location = new Location {
                    Latitude = 52.01, Longitude = 23.05, Altitude = 0
                },
                CreateDate = DateTime.Now,
            };

            try
            {
                using (var scope = new TransactionScope())
                {
                    using (var context1 = new RentalBikesContext())
                    {
                        context1.Stations.Add(station1);

                        context1.SaveChanges();
                    }

                    using (var context2 = new RentalBikesContext())
                    {
                        context2.Stations.Add(station2);

                        context2.SaveChanges();
                    }

                    scope.Complete();
                }
            }
            catch (Exception)
            {
            }
        }
예제 #10
0
        private static void BatchUpdateTest()
        {
            using (var context = new RentalBikesContext())
            {
                var projects = context.Projects.ToList();

                foreach (var project in projects)
                {
                    project.Description = "Opis...";
                }

                context.SaveChanges();
            }
        }
예제 #11
0
        private static void AddRentalTest()
        {
            using (var context = new RentalBikesContext())
            {
                var customer = context.Customers
                               .FirstOrDefault(c => c.Identifier == "848484730");

                Console.WriteLine(context.Entry(customer).State);

                var bike = context.Vehicles.OfType <Bike>().First();

                var station = context.Stations.Single(s => s.Symbol == "ST001");

                var rental = new Rental
                {
                    Rentee      = customer,
                    Bike        = bike,
                    FromStation = station,
                };

                context.Rentals.Add(rental);

                Console.WriteLine(context.Entry(rental).State);

                context.SaveChanges();

                //var lastBike = context.Vehicles.OfType<Bike>()
                //    .OrderBy(b=>b.VehicleId)
                //    .Last();

                //rental.Bike = lastBike;

                context.SaveChanges();

                Console.WriteLine(context.Entry(rental).State);
            }
        }
예제 #12
0
        private static void GeographyTest()
        {
            var myLocation = DbGeography.FromText("POINT (52.10 21.05)");


            using (var context = new RentalBikesContext())
            {
                var bike = context.Vehicles.OfType <Bike>().First();

                // WKT

                bike.Location = DbGeography.FromText("POINT (52.10 21.0)");

                context.SaveChanges();
            }
        }
예제 #13
0
        private static void AddStationsTest()
        {
            var stations = new List <Station>
            {
                new Station {
                    Symbol   = "ST001",
                    Name     = "PKP",
                    Address  = "Dworcowa",
                    Capacity = 10,
                    Location = new Location {
                        Latitude = 52.01, Longitude = 23.05, Altitude = 0
                    },
                    CreateDate = DateTime.Now,
                },

                new Station {
                    Symbol   = "ST002",
                    Name     = "Nabrzeżna",
                    Address  = "Morska",
                    Capacity = 65,
                    Location = new Location {
                        Latitude = 52.51, Longitude = 23.05, Altitude = 0
                    },
                    CreateDate = DateTime.Now,
                },

                new Station {
                    Symbol   = "ST003",
                    Name     = "Altkom",
                    Address  = "Chłodna",
                    Capacity = 17,
                    Location = new Location {
                        Latitude = 52.01, Longitude = 28.05, Altitude = 0
                    },
                    CreateDate = DateTime.Now,
                }
            };

            using (var context = new RentalBikesContext())
            {
                context.Stations.AddRange(stations);

                context.SaveChanges();
            }
        }
예제 #14
0
        private static void AddCustomerTest()
        {
            var customer = new Customer
            {
                FirstName   = "Marcin",
                LastName    = "Sulecki",
                Email       = "*****@*****.**",
                PhoneNumber = "555-555-555",
                Identifier  = "848484730"
            };

            using (var context = new RentalBikesContext())
            {
                context.Customers.Add(customer);

                context.SaveChanges();
            }
        }
예제 #15
0
        private static void DetachTest()
        {
            // deserializacja
            var customer = new Customer
            {
                CustomerId  = 1,
                FirstName   = "Bartek",
                LastName    = "Sulecki",
                Identifier  = "47437373",
                PhoneNumber = "555-666-777",
                Email       = "*****@*****.**",
            };

            using (var context = new RentalBikesContext())
            {
                // zła praktyka!
                //var cust = context.Customers
                //    .SingleOrDefault(d => d.CustomerId == customer.CustomerId);
                //cust.Email = "*****@*****.**";

                //var customer = context.Customers
                //    .AsNoTracking()
                //    .First(p => p.Identifier == "848484730");

                Console.WriteLine(context.Entry(customer).State);

                // context.Customers.Add(customer);

                context.Customers.Attach(customer);

                // modyfikacja całego obiektu
                // context.Entry(customer).State = System.Data.Entity.EntityState.Modified;

                // modyfikacja wybranych pól
                context.Entry(customer).Property(p => p.PhoneNumber).IsModified = true;
                context.Entry(customer).Property(p => p.Email).IsModified       = true;

                Console.WriteLine(context.Entry(customer).State);

                context.SaveChanges();
            }
        }
예제 #16
0
        private static void AddProjectTest()
        {
            var project = new Project
            {
                ProjectName = "Postdata/EF",
                Description = "Szkolenie EF",
                Employees   = new List <Employee>
                {
                    new Employee {
                        FirstName = "Marcin", LastName = "Sulecki", Salary = 1000
                    },
                    new Employee {
                        FirstName = "Bartek", LastName = "Sulecki", Salary = 6000
                    },
                }
            };

            using (var context = new RentalBikesContext())
            {
                context.Projects.Add(project);

                context.SaveChanges();
            }
        }
예제 #17
0
        private static void AddRentalTest2()
        {
            var rental = new Rental
            {
                Rentee = new Customer
                {
                    CustomerId = 1,
                    FirstName  = "Marcin",
                    LastName   = "Sulecki"
                },

                Bike = new Bike
                {
                    VehicleId = 1,
                    BikeType  = BikeType.Town,
                    Color     = "Green"
                },

                FromStation = new Station
                {
                    StationId = 3,
                    Name      = "Altkom",
                    Address   = "Chłodna",
                },


                ToStation = new Station
                {
                    StationId = 3,
                    Name      = "Altkom",
                    Address   = "Chłodna",
                },


                CreateDate = DateTime.Now,
            };

            using (var context = new RentalBikesContext())
            {
                context.Rentals.Add(rental);

                Console.WriteLine(context.Entry(rental).State);

                context.Entry(rental.Rentee).State = System.Data.Entity.EntityState.Unchanged;

                Console.WriteLine(context.Entry(rental.Rentee).State);

                context.Entry(rental.Bike).State = System.Data.Entity.EntityState.Unchanged;

                Console.WriteLine(context.Entry(rental.Bike).State);

                context.Entry(rental.FromStation).State = System.Data.Entity.EntityState.Unchanged;
                Console.WriteLine(context.Entry(rental.FromStation).State);

                context.Entry(rental.ToStation).State = System.Data.Entity.EntityState.Unchanged;
                Console.WriteLine(context.Entry(rental.ToStation).State);


                Console.WriteLine(context.Entry(rental).State);

                context.SaveChanges();
            }
        }