title: Is the DAO Pattern Widely Used in .NET?
body: <p>Is the DAO—Data Access Object—a commonly used pattern in .NET?  I've always used DAOs as a way to provide access to my data layer.  For example I might have a thin interface over my EntityFramework ObjectContext exposing all of my ObjectSets as IObjectSet.</p>
  
  <p>Complex queries would then be exposed by DAOs, each of which with a dependency on this interface.  I might have a ProductDAO that exposes methods like <code>GetProductsOnSale()</code> or <code>GetInfrequenlySoldProducts()</code>.  My controllers or presenters would then use these methods, which would likely be virtual to allow stubbing specific results for unit tests. </p>
  
  <p>So is this a commonly used idiom in .NET?  For some reason the overwhelming majority of examples I see online using this pattern are based on Java.  Even <a href="https://stackoverflow.com/questions/2468573/best-practice-for-dao-pattern">this question</a>  on DAO best practices is tagged as Java and not C#.</p>
  
  <p>There's nothing wrong with using something from another community, I just have a slight fear that everyone around me is doing things differently...</p>