예제 #1
0
        public static void DetachedEntities()
        {
            const int actorId = 1;
            var       name    = MoviesContext.Instance.Actors.Where(a => a.ActorId == actorId).Select(a => $"{a.FirstName} {a.LastName}").First();

            Console.WriteLine($"Original Name:\t{name}");

            var actorModel = new ActorModel
            {
                ActorId   = actorId,
                FirstName = "Luke",
                LastName  = "Skywalker"
            };
            var actor = actorModel.Copy <ActorModel, Actor>();

            MoviesContext.Instance.Actors.Attach(actor);
            MoviesContext.Instance.Entry(actor).State = EntityState.Modified;

            MoviesContext.Instance.SaveChanges();

            name = MoviesContext.Instance.Actors.Where(a => a.ActorId == actorId).Select(a => $"{a.FirstName} {a.LastName}").First();
            Console.WriteLine($"Updated Name:\t{name}");

            actor.FirstName = "Mark";
            actor.LastName  = "Hammil";

            MoviesContext.Instance.SaveChanges();

            name = MoviesContext.Instance.Actors.Where(a => a.ActorId == actorId).Select(a => $"{a.FirstName} {a.LastName}").First();
            Console.WriteLine($"Reverted Name:\t{name}");

            Console.WriteLine();

            const int filmId = 1;
            var       year   = MoviesContext.Instance.Films.Where(f => f.FilmId == filmId).Select(f => f.ReleaseYear).First();

            Console.WriteLine($"Original Release Year:\t{year}");

            var model = new FilmUpdateModel
            {
                FilmId      = filmId,
                Description = "As Steve Rogers struggles to embrace his role in the modern world, he teams up with a fellow Avenger and S.H.I.E.L.D agent, Black Widow, to battle a new threat from history: an assassin known as the Winter Soldier.",
                Title       = "Captain America: The Winter Soldier",
                RatingId    = 3,
                ReleaseYear = 2013
            };

            var film = model.Copy <FilmUpdateModel, Film>();

            MoviesContext.Instance.Films.Attach(film);
            MoviesContext.Instance.Entry(film).State = EntityState.Modified;

            MoviesContext.Instance.SaveChanges();

            year = MoviesContext.Instance.Films.Where(f => f.FilmId == filmId).Select(f => f.ReleaseYear).First();
            Console.WriteLine($"Updated Release Year:\t{year}");

            film.ReleaseYear = 2014;
            MoviesContext.Instance.SaveChanges();

            year = MoviesContext.Instance.Films.Where(f => f.FilmId == filmId).Select(f => f.ReleaseYear).First();
            Console.WriteLine($"Reverted Release Year:\t{year}");
        }