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(); }