Q:

In MVC Controller, wanting async for returning EntityFramework CodeFirst data

I'm wanting to use the async/await pattern in my ASP.NET MVC controller.  I'm getting the error

The ObjectContext instance has been disposed and can no longer be used

Ultimately, I'm wanting to cache my result but for now I think the first step is to just figure out how to work with EF and return with async/await
    public class SpeakerController : Controller
    {
        public async Task<ActionResult> Index()
        {
            using (var context = new MultiTenantContext())
            {
                var speakersAll = await context.Speakers.ToListAsync();
                return View("Index", speakersAll);
            }
        }

Solution Found:
private MultiTenantContext context = new MultiTenantContext();

    public async Task<ActionResult> Index()
    {
            var speakersAll = await context.Speakers.ToListAsync();
            return View("Index", speakersAll);
    }

As I said in the comment below, pulling context out of the using causes it not to be disposed when the ToListAsync() actually executes.

A:

You should avoid using Lazy Loading within web applications, because the goal is to minimize the response time of the HTTP request, and this is best achieved with fewer database requests. Especially with MVC and/or Web API, where you have very granular action methods, it should be possible in most cases to determine exactly what your data requirements are and include these in one or very few requests/queries. This puts less load on your database server and results in better performance for your web requests.
As for using statements and dbcontexts, you shouldn't be instantiating dbcontexts in your controller if you can help it. It's much better to inject them, and let your container determine how to manage their lifetime. Typically you will want to have exactly one dbcontext instance per request, which will be available for all (however few these may be) queries you need EF to make during the life of the request. If you're using StructureMap (my preference), you would achieve this with:
For<DbContext>.HybridHttpOrThreadLocalScoped().Use<MyContext>();

(Note that this syntax is updated with StructureMap 4)
If you're not sure whether you trust my recommendation, consider that EF7 is taking this recommendation further and making it difficult to work with EF7 and MVC 6 without using dependency injection, in an effort to drive developers toward doing the right thing (falling into "the pit of success" as it were). See this EF7/MVC6 tutorial in the official asp.net docs for an example (http://docs.asp.net/projects/mvc/en/latest/tutorials/mvc-with-entity-framework.html).
Excerpt:

Notice that we don’t set any value for Logger and BookContext. The
  dependency injection (DI) subsystem automatically sets these
  properties at runtime. DI also handles the object lifetimes, so you
  don’t need to call Dispose. For more information, see Dependency
  Injection.

