title: Is there an in-memory provider for Entity Framework?
body: <p>I am unit testing code written against the ADO .NET Entity Framework. I would like to populate an in-memory database with rows, and make sure that my code retrieves them properly.</p>
  
  <p>I can mock the Entity Framework using Rhino Mocks, but that would not be sufficient. I would be telling the query what entities to return to me. This would neither test the where clause nor the .Include() statements. I want to be sure that my where clause matches only the rows I intend, and no others. I want to be sure that I have asked for the entities that I need, and none that I don't.</p>
  
  <p>For example:</p>
  
  <pre><code>class CustomerService
  {
      ObjectQuery&lt;Customer&gt; _customerSource;
      public CustomerService(ObjectQuery&lt;Customer&gt; customerSource)
      {
          _customerSource = customerSource;
      }
      public Customer GetCustomerById(int customerId)
      {
          var customers = from c in _customerSource.Include("Order")
              where c.CustomerID == customerId
              select c;
          return customers.FirstOrDefault();
      }
  }
  </code></pre>
  
  <p>If I mock the ObjectQuery to return a known customer populated with orders, how do I know that CustomerService has the right where clause and Include? I would rather insert some customer rows and some order rows, then assert that the right customer was selected and the orders are populated.</p>