5

Ritengo che la gente alla SM sia molto più intelligente di me. Stavo cercando di costruire/testare un repository che segua quasi l'approccio this eccetto che voglio accoppiare liberamente la dipendenza ObjectContext all'interno del repository. Ho scoperto che per fare disaccoppiare questo ho bisogno di saltare un sacco di cerchi, come mostrato in this article.Even questo approccio è difficile lavorare con quandoPerché la classe ObjectContext non deriva da qualche interfaccia?

  1. si dispone di un edmx da un database esistente
  2. Si dispone di un repository generico costruito attorno all'interfaccia ObjectContext e IObjectSet
  3. Mentre si esegue il test delle unità, si desidera simulare il contesto di questo oggetto e mantenere tutte le operazioni in memoria. Pensa a testare i repository.

Ora la vera domanda, perché i creatori di ObjectContext decidono di non avere IObjectContext?

Spero che la mia domanda abbia un senso, sarò felice se qualcuno può provare che non lo fa e mi indica la strada.

Grazie in anticipo!

+1

Voglio solo sottolineare che poiché in EF4 tutto è basato sulla generazione del codice da modelli, è abbastanza semplice personalizzare il modello per emettere un'interfaccia che può essere implementata da ObjectContext. –

+0

La tua domanda ha senso, ma temo che sia una domanda per la SM. –

+0

@Alex Paven: Se c'è qualche link utile che potresti condividere con me, ti sarei davvero grato. – Perpetualcoder

risposta

5

Dal momento che il contesto è una classe parziale, è possibile aggiungere facilmente un'interfaccia ad esso in un file separato: public partial class YourContext : IMyCustomInterface, e si può mettere in qualsiasi IMyCustomInterface firme che si desidera utilizzare dal ObjectContext generato.

Oppure si potrebbe andare circa la (in generale) molto più consigliato, che è quello di astrarre oltre l'ObjectContext in repository come a this blog post (tutta quella serie di post è interessante e rilevante) o this one.

+0

+1, soprattutto per ricordarmi che 'YourContext' è' partial' :-). –