Ejemplo n.º 1
0
        private void SaveButton_Click(object sender, RoutedEventArgs e)
        {
            using (var db = new DbSchema())
            {
                if (SelectedPurchase == null)
                {
                    DateTimeOffset tempDate = (DateTimeOffset)Date.Date;
                    SelectedPurchase = new Purchase
                    {
                        Date     = tempDate.Date,
                        Gallons  = Convert.ToDecimal(Gallons.Text),
                        Cost     = Convert.ToDecimal(Cost.Text),
                        Trip     = Convert.ToDecimal(Trip.Text),
                        Odometer = Convert.ToInt32(Odometer.Text)
                    };
                    // This is required but I don't know why. If I try to do
                    // the Add directly on SelectedVehicle, the database doesn't
                    // get modified at all. It is as if the Vehicle objects in the
                    // list view are not the same as the Vehicle objects in the database;
                    // something is missing that allows the database code to function
                    // as expected.
                    Vehicle tgt = db.Vehicles.Include(v => v.Purchases).Single(v => v.ID == SelectedVehicle.ID);
                    //					Vehicle tgt = db.Vehicles.Find(SelectedVehicle.ID);
                    //SelectedPurchase.Vehicle = tgt;
                    tgt.Purchases.Add(SelectedPurchase);

                    //db.Purchases.Add(SelectedPurchase);
                }
                else
                {
                    // Grab the info.
                    DateTimeOffset tempDate = (DateTimeOffset)Date.Date;
                    SelectedPurchase.Date     = tempDate.Date;
                    SelectedPurchase.Gallons  = Convert.ToDecimal(Gallons.Text);
                    SelectedPurchase.Cost     = Convert.ToDecimal(Cost.Text);
                    SelectedPurchase.Trip     = Convert.ToDecimal(Trip.Text);
                    SelectedPurchase.Odometer = Convert.ToInt32(Odometer.Text);

                    // Mark the entry as having been modified.
                    // Note that it is not worth trying to figure out if the
                    // user really changed something or not.
                    db.Entry(SelectedPurchase).State = EntityState.Modified;
                }

                db.SaveChanges();
            }

            // Go back to the main page.
            this.Frame.GoBack();
        }
        private void SaveButton_Click(object sender, RoutedEventArgs e)
        {
            using (var db = new DbSchema())
            {
                if (SelectedVehicle == null)
                {
                    SelectedVehicle = new Vehicle
                    {
                        Name            = VehicleName.Text,
                        Year            = Convert.ToInt32(VehicleYear.Text),
                        Make            = VehicleMake.Text,
                        Model           = VehicleModel.Text,
                        StartingMileage = Convert.ToInt32(StartingMileage.Text)
                    };

                    db.Vehicles.Add(SelectedVehicle);
                }
                else
                {
                    // Grab the info.
                    SelectedVehicle.Name            = VehicleName.Text;
                    SelectedVehicle.Year            = Convert.ToInt32(VehicleYear.Text);
                    SelectedVehicle.Make            = VehicleMake.Text;
                    SelectedVehicle.Model           = VehicleModel.Text;
                    SelectedVehicle.StartingMileage = Convert.ToInt32(StartingMileage.Text);

                    // Mark the entry as having been modified.
                    // Note that it is not worth trying to figure out if the
                    // user really changed something or not.
                    db.Entry(SelectedVehicle).State = EntityState.Modified;
                }

                db.SaveChanges();
            }

            // Go back to the main page.
            this.Frame.GoBack();
        }