Sono codice di test dell'unità scritto contro ADO .NET Entity Framework. Vorrei popolare un database in memoria con le righe e assicurarmi che il mio codice lo recuperi correttamente.Esiste un provider in memoria per Entity Framework?
Posso prendere in giro Entity Framework usando Rhino Mocks, ma ciò non sarebbe sufficiente. Vorrei dire alla domanda quali entità dovrei tornare da me. Ciò non testerebbe né la clausola where né le istruzioni .Include(). Voglio essere sicuro che la mia clausola where corrisponda solo alle righe che intendo, e nessuna altra. Voglio essere sicuro di aver chiesto le entità di cui ho bisogno, e nessuna di quelle che non ho.
Ad esempio:
class CustomerService
{
ObjectQuery<Customer> _customerSource;
public CustomerService(ObjectQuery<Customer> 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();
}
}
Se io giro l'ObjectQuery per tornare un cliente conosciuto popolato con gli ordini, come faccio a sapere che CustomerService ha il diritto clausola where e Includi? Vorrei piuttosto inserire alcune righe di clienti e alcune righe di ordine, quindi affermare che il cliente giusto è stato selezionato e gli ordini sono compilati.
Come hai finito, ho usato le interfacce per seguire il modello di deposito e il modello di unità di lavoro. Quindi, ho due namespace -> EF e Fake. Con il mio repository Fake, ho appena utilizzato IList per archiviare i miei file e sfruttare Linq per gli oggetti per estrarre i dati. Funziona benissimo :) –
EntityFramework 7 dispone ora del provider InMemoery. Ancora beta come di commento, ma se ti iscrivi al nightly nuget puoi ottenerlo. – ppumkin