I guess the data access should be performed within the model itself? If that's the case, I'm not sure how I can loop through my rows to create the model instance(s).
https://en.wikipedia.org/wiki/Separation_of_concerns
https://msdn.microsoft.com/en-us/library/bb384398.aspx?f=255&MSPPError=-2147217396
http://www.codeproject.com/Articles/70061/Architecture-Guide-ASP-NET-MVC-Framework-N-tier-En
https://msdn.microsoft.com/en-us/library/bb399572(v=vs.100).aspx
The controller makes requests to the DAL for data access.
Play with the code below, run it and see how things work as far as n-tier is concerned, just don't get locked in on dataset and datatables and figure out how to use EF in the DAL, look at EF Database First approach, the easiest to use in you MVC solution.
http://www.codeproject.com/Articles/36847/Three-Layer-Architecture-in-C-NET
http://lauteikkehn.blogspot.com/2012/03/datatable-vs-list.html