Pourquoi DbContext ne pas mettre en œuvre IDbContext interface?

Pourquoi il n'y a pas de IDbContext interface dans le Cadre de l'Entité? Ne serait-il pas plus facile de tester des choses si il y avait une interface existante avec des méthodes comme SaveChanges (), etc. partir de laquelle vous pourrez tirer de votre base de données personnalisée contexte de l'interface?

public interface ICustomDbContext : IDbContext
{
    //add entity set properties to existing set of methods in IDbContext
    IDbSet<SomeEntity> SomeEntities { get; }
}
  • Vous pouvez toujours créer cette interface et mettre en œuvre sur votre dérivés contexte, mais il va vraiment de ne pas être très utile pour les tests unitaires.
  • Ouais, je suis juste curieux de savoir pourquoi il y a cette interface n'est pas à la première place, hors de la boîte. Il n'y aurait pas besoin de le créer manuellement.
  • Vous pouvez envelopper le DbContext dans un Dépôt, donc peut se moquer de la place. Encore que Ladislav points, vous devez être prudent de ne pas exposer quoi que ce soit sur le Référentiel qui serait effectuée par linq to entities / linq to sql
  • c'est ma conviction qu'un contexte est plus proche d'une Unité De Travail d'un référentiel. Le référentiel est plus proche de la DbSet.
  • vous avez raison, mais encore, une pension de mise en œuvre doit utiliser un contexte. Un "repo utilise/disposer d'une unité de travail" n'a pas de sens. Une "unité de travail et les utilisations ont une ou de plusieurs pensions de titres" qui fait sens. Et encore une fois, vous avez raison, un contexte qui ont un ou plusieurs DbSet. Cela nous avertir, lors de la construction d'un repo autour d'un contexte, et la construction d'une unité de travail autour de la construit repos: Nous faisons de certains redondantes chose, intégrer un modèle de conception pour le même modèle de conception... Et pourquoi faisons-nous cela? En raison de l'absence de la mise en œuvre d'origine est clair interfaces: IDbRepository est absent (ce qui serait l'unité de travail)
  • Eh bien, il n'est pas une bonne idée: 100 000 développeurs peuvent créer pour elle-même/lui-même (1 000 000) fois... Il serait mieux si EF de l'équipe de soins sur accepté les design patterns et bien connu de l'unité des essais pratiques. Son' EF 6 maintenant
  • Excellent pensées. J'ai effectivement abandonné l'utilisation du modèle et suis en utilisant le DbContext directement, je pense que c'est un faux-pas, de la sorte, mais garder les choses simples.

InformationsquelleAutor Grief Coder | 2012-09-04