Exemplo n.º 1
0
        //Eliminare Record
        public static void DeleteMovie()
        {
            CinemaDataContext db = new CinemaDataContext(conn);

            SelectMovies();
            var deleteMovie = db.Movies.SingleOrDefault(m => m.ID == 10);

            if (deleteMovie != null)
            {
                db.Movies.DeleteOnSubmit(deleteMovie);
            }
            try
            {
                db.SubmitChanges();  //inserimento nel databse
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            Console.WriteLine("-----AGGIORNAMENTO FILM-----");
            SelectMovies();
        }
Exemplo n.º 2
0
        public static void UpdateMovieByTitolo()
        {
            using (CinemaDataContext db = new CinemaDataContext(connectionString))
            {
                Console.WriteLine("\r\nInserire il Titolo del film da aggiornare:\r\n ");
                string titolo = Console.ReadLine();

                // cerco con query

                IQueryable <Movy> filmByTitolo =
                    from film in db.Movies
                    where film.Titolo == titolo
                    select film;

                Console.WriteLine("I film trovati sono {0}\r\n", filmByTitolo.Count());

                if (filmByTitolo.Count() == 0 || filmByTitolo.Count() > 1)
                {
                    Console.WriteLine("Non ci sono film con questo titolo!");
                    return; // non prova a fare update esce dal metodo
                }

                SelectMovies();


                // devo dare valori
                Console.WriteLine("Inserire i valori aggiornati:\r\n ");
                Console.WriteLine("Titolo:\r\n");
                string Titolo = Console.ReadLine();
                Console.WriteLine("Genere:\r\n");
                string Genere = Console.ReadLine();
                Console.WriteLine("Durata:\r\n");
                int Durata = Convert.ToInt32(Console.ReadLine());

                // fovrei fare tutti i controlli ma se sono gisuti dovrebbe essere solo 1

                foreach (var f in filmByTitolo)
                {
                    f.Titolo = Titolo; // QUI STO FACENDO IL VERO E PROPRIO CAMBIAMENTO IN OBJECT MODEL
                                       //non esiste UPDATE ON SUBMIT
                    f.Genere = Genere;
                    f.Durata = Durata;
                }
                // ora devo provare a ricnciliare on db, ma devo gestire eventuale concorrenza

                try
                {
                    // forzo a fermarsi per vedere eccezione

                    Console.WriteLine("\r\n Premi un tasto per mandare modifiche a db");
                    Console.ReadKey();


                    db.SubmitChanges(ConflictMode.FailOnFirstConflict); // sentro submit changes dico come gestire i conflitti per concorrenza(subito o accumulo eccezione)
                }
                catch (ChangeConflictException e)                       // particolare tipo di eccezione usata per gestire conflitti per concorrenza
                {
                    Console.WriteLine("Concurrency Error");
                    Console.WriteLine(e);

                    // possiamo gestire il conflitto in 3 modi; io forzo il db, il db forzame o faccio emrging

                    // trovo queste cose nel datacontext chage conflict   db.ChangeConflicts.ResolveAll(RefreshMode.);
                    /// OVERWRITE: aggiorno il mio modello con il database
                    /// KEEP CURRENT VALUES: è giusto il mio object model e sovrascrivo db
                    /// KEEP CHANGE: cerca di mantenere entrambi
                    ///
                    db.ChangeConflicts.ResolveAll(RefreshMode.OverwriteCurrentValues); // ora una volta risolti se aggiorno il db locale ok, altrimenti negli atltri due casi devo mandare modifiche al db

                    db.SubmitChanges();                                                // lo dò perchè se ho KeepCurrent Values o KeepChange lui sa come risolverlo ma non ho aggiornato database
                }
            }
        }