static void Main(string[] args)
        {
            Console.WriteLine("Init database...");
            MovieTheaterRatingContext context = new MovieTheaterRatingContext();

            //***** UNCOMMENT THESE OUT TO POPULATE DATABASE *********//
            context.Database.Initialize(true);
            if (context != null)
                context.Dispose();
            //AddManyRecords(); //UNCOMMENT THIS OUT IF WANNA TRY WITH BULK INSERT
            Console.WriteLine("Done...");


            //Console.WriteLine("==== Calling TestProcessTAskAsync() first ====");
            //TestProcessTAskAsync();
            //Console.WriteLine("press any key to exit");

            //Console.WriteLine("==== Calling LongRunningMethod() second ====");
            //TestAsyncAwaitMethods();
            //Console.WriteLine("press any key to exit");

            //Console.WriteLine("==== Calling TestLoop() third ====");
            //TestLoop();
            //Console.WriteLine("press any key to exit");

            //Console.WriteLine("==== Calling AsyncAwaitDemo class fourth ====");
            //var demo = new AsyncAwaitDemo();
            //demo.Test();

            //Console.WriteLine("==== Calling AsyncAwaitDemo2 class fourth ====");
            //var demo2 = new AsyncAwaitDemo2();
            //demo2.TestLoop();

            Console.ReadLine();
        }
 public MovieController()
 {
     context = new MovieTheaterRatingContext();
 }
        private static MovieTheaterRatingContext AddToContext(MovieTheaterRatingContext db, Movie entity, int count, int commitCount, bool recreatedContext)
        {
            db.Set<Movie>().Add(entity);

            if (count % commitCount == 0)
            {
                db.SaveChanges();
                if (recreatedContext)
                {
                    db.Dispose();
                    db = new MovieTheaterRatingContext();
                    db.Configuration.AutoDetectChangesEnabled = false;
                }
            }

            return db;
        }
        static void AddManyRecords()
        {
            List<Movie> reports = new List<Movie>();
            Stopwatch sw = Stopwatch.StartNew();
            var scopeOptions = new TransactionOptions();
            scopeOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
            scopeOptions.Timeout = TimeSpan.MaxValue;
            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, scopeOptions))
            {
                MovieTheaterRatingContext db = null;
                try
                {
                    db = new MovieTheaterRatingContext();
                    db.Configuration.AutoDetectChangesEnabled = false;
                    int count = 0;
                    AddTestRecords(reports);
                    foreach (var rep in reports)
                    {
                        ++count;
                        db = AddToContext(db, rep, count, 100000, true);
                    }
                    db.SaveChanges();

                }
                finally
                {
                    if (db != null)
                        db.Dispose();
                }
                scope.Complete();
            }
            sw.Stop();
            Console.WriteLine("{0} milliseconds", sw.ElapsedMilliseconds);
        }
        public void Setup()
        {
            connection = Effort.DbConnectionFactory.CreateTransient();
            using (var context = new MovieTheaterRatingContext(connection))
            {
                actorMovie1 = new ActorMovie
                {
                    ID = 1,
                    ActorID = 1,
                    CharacterInMovie = "Actor 1: First character",
                    MovieID = 1
                };

                actorMovie2 = new ActorMovie
                {
                    ID = 2,
                    ActorID = 1,
                    CharacterInMovie = "Actor 1: Second character",
                    MovieID = 1
                };

                actorMovie3 = new ActorMovie
                {
                    ID = 3,
                    ActorID = 2,
                    CharacterInMovie = "Actor 2: First character",
                    MovieID = 1
                };

                context.ActorMovies.Add(actorMovie1);
                context.ActorMovies.Add(actorMovie2);

                List<ActorMovie> moviePlayedByActor1 = new List<ActorMovie>();
                moviePlayedByActor1.Add(actorMovie1);
                moviePlayedByActor1.Add(actorMovie2);

                List<ActorMovie> moviePlayedByActor2 = new List<ActorMovie>();
                moviePlayedByActor2.Add(actorMovie3);

                actor1 = new Actor
                {
                    Id = 1,
                    FirstName = "First1",
                    LastName = "Last1",
                    ActorMovies = moviePlayedByActor1
                };

                actor2 = new Actor
                {
                    Id = 2,
                    FirstName ="First2",
                    LastName = "Last2",
                    ActorMovies = moviePlayedByActor2
                };

                context.Actors.Add(actor1);
                context.Actors.Add(actor2);

                List<ActorMovie> cast = new List<ActorMovie>();
                cast.Add(actorMovie1);
                cast.Add(actorMovie2);
                cast.Add(actorMovie3);
                movie = new Movie
                {
                    Id = 1,
                    Title = "Movie 1",
                    ActorMovies = cast
                };
                context.Movies.Add(movie);
                context.SaveChanges();
            }

            _context = new MovieTheaterRatingContext(connection);
            _context.Database.Initialize(true);
        }