title: NHibernate3 Query vs QueryOver
body: <p>I noticed there are two ways to create nice generic friendly access to nhibernate.</p>
  
  <pre><code>IQueryOver&lt;T, T&gt; query= session.QueryOver&lt;T&gt;().Where(criteria);
  </code></pre>
  
  <p>and</p>
  
  <pre><code>IQueryable&lt;T&gt; query= session.Query&lt;T&gt;().Where(criteria);
  </code></pre>
  
  <p>Implementations of each interface.</p>
  
  <pre><code>IQueryOver&lt;TRoot, TSubType&gt; : IQueryOver&lt;TRoot&gt;, IQueryOver
  </code></pre>
  
  <p>and</p>
  
  <pre><code>IQueryable&lt;out T&gt; : IEnumerable&lt;T&gt;, IQueryable, IEnumerable
  </code></pre>
  
  <p>IQueryable implements IEnumerable, thus supports all the LINQ friendly things you would expect. I am tending towards this implementation, but was wondering if anyone knew what the purpose of QueryOver was that you cannot accomplish with Query?</p>