title: How to populate a generic list of objects in C# from SQL database
body: <p>I am just learning ASP.NET c# and trying to incorporate best practices into my applications.  Everything that I read says to layer my applications into DAL, BLL, UI, etc based on separation of concerns.  Instead of passing datatables around, I am thinking about using custom objects so that I am loosely coupled to my data layer and can take advantage of intellisense in VS.  I assume these objects would be considered DTOs?</p>
  
  <p>First, where do these objects reside in my layers?  BLL, DAL, other?</p>
  
  <p>Second, when populating from SQL, should I loop through a data reader to populate the list or first fill a data table, then loop through the table to populate the list?  I know you should close the database connection as soon as possible, but it seems like even more overhead to populate the data table and then loop through that for the list.</p>
  
  <p>Third, everything I see these days says use Linq2SQL.  I am planning to learn Linq2SQL, but at this time I am working with a legacy database that doesn't have foreign keys setup and I do not have the ability to fix it atm.  Also, I want to learn more about c# before I start getting into ORM solutions like nHibernate.  At the same time I don't want to type out all the connection and SQL plumbing for every query.  Is it ok to use the Enterprise DAAB for now?</p>