I am using Entity Framework Code First
I have a Movie like so:
public class Movie
{
public byte[] Thumbnail { get; set; }
It's taking that long because it's putting everything you've loaded into EF's Change Tracker. That's all 4000 records being tracked in memory, which is understandably causing your app to slow down. If you're not actually doing any editing on the page, I suggest that you use .AsNoTracking() when you grab the Movies.
As so:
var allMovies = MyDbContext.Movies.AsNoTracking();
foreach (var movie in allMovies)
MovieVms.Add(new MovieViewModel(movie));
MSDN link on it can be found here.