//Inserimento record public static void InsertMovie() { using (CinemaDataContext db = new CinemaDataContext(connectionString)) { Console.WriteLine("Tabella iniziale"); SelectMovies(); var movieToInsert = new Movy(); movieToInsert.Titolo = "Lala land"; movieToInsert.Genere = "Romantico"; movieToInsert.Durata = 123; db.Movies.InsertOnSubmit(movieToInsert); //Questo verrà davvero inserito nel momento in cui si chiamerà il SubmitChanges. try { db.SubmitChanges(); } catch (Exception e) { Console.WriteLine(e); } Console.WriteLine("Tabella finale"); SelectMovies(); } }
public static void UpdateMovieByTitle() { using (CinemaDataContext db = new CinemaDataContext(connectionString)) { Console.WriteLine("Titolo del film da aggiornare:"); string daAggiornare = Console.ReadLine(); IQueryable <Movy> filmByTitle = from film in db.Movies where film.Titolo == daAggiornare select film; Console.WriteLine("I film trovati sono {0}", filmByTitle.Count()); if (filmByTitle.Count() == 0 || filmByTitle.Count() > 1) { return; } SelectMovies(); Console.WriteLine("Scrivere i valori aggiornati:"); Console.WriteLine("Titolo:"); string titolo = Console.ReadLine(); Console.WriteLine("Genere:"); string genere = Console.ReadLine(); Console.WriteLine("Durata:"); int durata = Int32.Parse(Console.ReadLine()); foreach (var f in filmByTitle) { f.Titolo = titolo; f.Genere = genere; f.Durata = durata; } //ora andiamo a fare l'update sul db e gestire l'eventuale concorrenza try { Console.WriteLine("Premi un tasto per inviare le modifiche al db..."); Console.ReadKey(); db.SubmitChanges(ConflictMode.FailOnFirstConflict); //la ConflictMode si usa per gestire tutti i Conflitti di Concurrency } catch (ChangeConflictException e) { Console.WriteLine("Concurrency error"); Console.WriteLine(e); Console.ReadKey(); //qui posso risolvere i conflitti scegliendo se modificare o no il db (o farlo parzialmente) db.ChangeConflicts.ResolveAll(RefreshMode.OverwriteCurrentValues); //db.SubmitChanges(); va rimesso qui se scegliamo KeepCurrentValues o KeepChanges, //perchè lui non lo fa prima perchè trova un conflitto. Ora che sa come gestirlo, deve aggiornare il db. } } }
public static void DeleteMovie() { using (CinemaDataContext db = new CinemaDataContext(connectionString)) { var movieToDelete = db.Movies.SingleOrDefault(m => m.ID == 2); //sto selezionando dalla tabella un singolo elemento, quello che verifica la condizione. //Mi restituisce null se non trova niente if (movieToDelete != null) { db.Movies.DeleteOnSubmit(movieToDelete); } try { db.SubmitChanges(); } catch (Exception e) { Console.WriteLine(e); } } }