Async and await in MVC 4 Controller

First of all, you cannot use asynchronous processing with child actions and I suppose this is what you are trying to do.

Secondly, you are not doing any asynchronous processing here by spinning up another thread to execute your code with the below line of code:

Task.Run(() => GetAllEnvironments());

It will block a thread at the end of the day and you will have nothing but a context switch overhead. EF6 will have support for asynchronous processing. For asynchronous queries with pure ADO.NET, have a look:

Asynchronous Database Calls With Task-based Asynchronous Programming Model (TAP) in ASP.NET MVC 4