Beispiel #1
0
        //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();
            }
        }
Beispiel #2
0
        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.
                }
            }
        }
Beispiel #3
0
        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);
                }
            }
        }