/// <summary> /// Füge einen Passagier zu einem Flug hinzu /// </summary> public Maschinenkauf NeuMaschinenkauf(int MaschinenartID, int anz, int Einzelpreis, DateTime Kaufdatum) { try { Maschinenkauf kauf = new Maschinenkauf(); kauf.Maschinenart_ID = MaschinenartID; kauf.Anzahl = anz; kauf.Einzelpreis = Einzelpreis; kauf.Rechnungspreis = anz * Einzelpreis; kauf.Kaufdatum = Kaufdatum; modell.MaschinenkauflisteSatz.AddObject(kauf); try { modell.SaveChanges(); } catch (Exception ex) { Console.WriteLine(kauf.ToString() + " | " + ex.Message.ToString()); return(null); } return(kauf); } catch (Exception ex) { Console.WriteLine(ex.Message.ToString()); return(null); } }
private void Add() { Maschinenkauf newMaschinenkauf = new Maschinenkauf(); Maschinenkauf.Add(newMaschinenkauf); walkthrowGridUpdaterMethod(); }
/// <summary> /// Änderungen an einer Liste von Passagieren speichern /// Die neu hinzugefügten Passagiere muss die Routine wieder zurückgeben, da die IDs für die /// neuen Passagiere erst beim Speichern von der Datenbank vergeben werden /// </summary> public List <Maschinenkauf> SaveMaschinenkaufe(List <Maschinenkauf> Maschinenkaufset, out string Statistik) { //https://blogs.msdn.microsoft.com/diego/2010/10/05/self-tracking-entities-applychanges-and-duplicate-entities/ // Änderungen für jeden einzelnen Passagier übernehmen try { foreach (Maschinenkauf p in Maschinenkaufset) { if (p.ChangeTracker.State == ObjectState.Modified) { var abfrage = from Maschinenkauf in modell.MaschinenkauflisteSatz.Include("Maschinenartenliste") select Maschinenkauf; Maschinenkauf current = abfrage.Where(o => o.Maschinenkauf_ID == p.Maschinenkauf_ID).First(); CrossCutting.Mietmaschinendatenbank_DataClasses.Maschinenkauf.Clone(p, current); modell.MaschinenkauflisteSatz.ApplyChanges(current); current.ChangeTracker.State = ObjectState.Unchanged; } else if (p.ChangeTracker.State == ObjectState.Deleted) { var abfrage = from Maschinenkauf in modell.MaschinenkauflisteSatz.Include("Maschinenartenliste") select Maschinenkauf; Maschinenkauf current = abfrage.Where(o => o.Maschinenkauf_ID == p.Maschinenkauf_ID).First(); current.MarkAsDeleted(); modell.MaschinenkauflisteSatz.DeleteObject(current); } else if (p.ChangeTracker.State == ObjectState.Added) { modell.MaschinenkauflisteSatz.ApplyChanges(p); } } } catch { Console.Write("Context is up to date"); } // Statistik der Änderungen zusammenstellen Statistik = ""; Statistik += "Geändert: " + modell.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Modified).Count(); Statistik += " Neu: " + modell.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Added).Count(); Statistik += " Gelöscht: " + modell.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Deleted).Count(); // Neue Datensätze merken, da diese nach Speichern zurückgegeben werden müssen (haben dann erst ihre IDs!) List <Maschinenkauf> NeueMaschinenkaufe = Maschinenkaufset.Where(f => f.ChangeTracker.State == ObjectState.Added).ToList(); // Änderungen speichern modell.SaveChanges(); modell.Refresh(System.Data.Objects.RefreshMode.StoreWins, modell.MaschinenkauflisteSatz); // Statistik der Änderungen zurückgeben return(NeueMaschinenkaufe); }
private void Delete() { if (CurrentMaschinenkauf != null) { int index = Maschinenkauf.IndexOf(CurrentMaschinenkauf); CurrentMaschinenkauf.ChangeTracker.State = ObjectState.Deleted; Maschinenkauf[index] = CurrentMaschinenkauf; walkthrowGridUpdaterMethod(); //kunden.Remove(currentKunde); } Console.WriteLine("Delete"); }
///------------------------------------------------------------------------------------- ///------------------------------------------------------------------------------------- ///------------------------------------------------------------------------------------- /// <summary> /// Füge einen Passagier zu einem Flug hinzu /// </summary> public Maschinenkauf NeuMaschinenkauf(int MaschinenartID, int anz, int Einzelpreis, DateTime Kaufdatum) { try { // Transaktion, nur erfolgreich wenn Platzanzahl reduziert und Buchung erstellt! using (System.Transactions.TransactionScope t = new System.Transactions.TransactionScope()) { // hier erfolgen Änderungen in Datenbanken über zwei Methoden der Datenzugriffsschicht Maschinenkauf kauf = Maschinenkauf_Verwaltungsklasse.NeuMaschinenkauf(MaschinenartID, anz, Einzelpreis, Kaufdatum); if (kauf != null) { return(null); } // Lagerbestand erhöhen Lagerbestand lager = Maschinenkauf_Verwaltungsklasse.AddGekaufteMaschineZuLager(MaschinenartID, anz); if (lager != null) { return(null); } // Zu Maschinenartenliste hinzufügen Maschinenart art = Maschinenkauf_Verwaltungsklasse.AddGekaufteMaschineZuMaschinenart(MaschinenartID, anz * Einzelpreis); if (art != null) { return(null); } // Transaktion erfolgreich abschließen t.Complete(); // Buchungscode zurückgeben return(kauf); } } catch (Exception ex) { Console.WriteLine(ex.Message.ToString()); return(null); } }