2017-10-06 2 views
-1

J'ai un dilema implémentant le modèle de service de référentiel dans mon projet CVM WPF MVVM où j'ai un grand ensemble de données dans mon modèle. J'ai utilisé la base de données EntityFramework d'abord où j'ai créé environ 40 entités, donc mon modèle est assez grand et pour moi cela n'a aucun sens d'implémenter 40 dépôts différents, à cause de cela j'ai utilisé le modèle de service de référentiel générique.Correct Mise en œuvre du modèle de service de référentiel pour le grand modèle

Mon dépôt se présente comme suit:

public interface IEntityRepository<T> : IDisposable where T : class 
    { 
    IQueryable<T> FindBy(Expression<Func<T, bool>> predicate); 
    IEnumerable<T> getEntities(); 
    T RetrieveEntity(int entityID); 
    void CreateEntity(T entity); 
    void UpdateEntity(T entity); 
    void DeleteEntity(T entity); 
    void Save(); 
    } 

Et voici la signature de la classe mise en œuvre des méthodes.

public class EntityRepository<T> : 
    IEntityRepository<T> where T : class 
    { 
     private DbContext context; 
     public EntityRepository(DbContext context) 
     { 
     this.context = context; 
     }   

     ..... 

    } 

Ma question est maintenant, comment l'apparence de service comme pour que je n'ai pas à mettre en œuvre pour chaque entité unique dans mon modèle. Je cherche quelque chose comme ça je peux dymaniquement créer le service par le nom de type de l'entité.

Est-ce que quelqu'un connaît une solution à mon problème? Merci!

+0

Je pense que les recherches que vous avez faites pour aller aussi loin devraient avoir quelques exemples d'implémentations. SO n'est pas un service de rédaction de code, vous devez poser des questions sur les problèmes avec le code que vous avez écrit et que vous pouvez démontrer. – Crowcoder

Répondre

0

Je ne suis pas convaincu que le modèle de référentiel soit une couche utile si vos classes de référentiel mappent une à une avec vos entités de base de données physiques.

Vous pourriez être mieux avec une couche de service ou un autre type de façade. Vous pouvez également trouver le succès en utilisant le modèle de requête si vous insistez sur une couche d'accès aux données au-dessus de l'infrastructure de l'entité. Dans ce modèle, chaque classe de requête peut avoir un objet paramètre définissant les paramètres sur lesquels vous pouvez interroger votre modèle. Où les données renvoyées sont structurées plus adaptées à la consommation dans la couche d'interface métier ou utilisateur. Chaque objet de requête est alors pertinent pour une partie de votre entreprise ou de votre couche d'interface utilisateur. Le modèle de requête peut ensuite être utilisé lorsque vous devez interroger vos données au-delà de l'accès à des entités uniques.