2013-07-08 8 views
0

Donc, je travaille sur un nouveau logiciel, mais je n'ai pas d'autre choix que de frotter la base de données. Je voudrais utiliser Entity Framework là où c'est logique.Entity Framework, Projections, and Relations (oh mon?)

Voici mon dilemme:

  • Comme les tables sont très larges, et je ne peux pas changer cela, je vais probablement faire un usage intensif de projection pour limiter la largeur des ensembles de données que je requête. D'après ce que j'ai pu voir, beaucoup de gens utilisent un modèle où il y a une seule classe DbContext pour l'ensemble du projet.

Ainsi,

je pèse ces avantages et les inconvénients, et je me demande quelles sont les meilleures pratiques établies pourraient être:

  • Utilisez 1 DbContext.
    • Il pourrait y avoir beaucoup de "pollution" ici, avec des paquets de projections des données à l'intérieur de la classe de contexte 1. Cela sonne comme si cela pouvait devenir un cauchemar de maintenance. Ne faites pas mes projections dbsets du tout - faites-en simplement des objets anciens et sélectionnez un nouveau MyProject {..} dans ceux-ci.
      • Cette offre l'avantage de garder mes projections dans des ensembles spécifiques au module et namespaces, mais maintenant je reçois pas de chargement de navigation/paresseux/etc
    • Soyez le mal ?? et utiliser plusieurs DbContexts? Je ne suis pas vraiment sûr de ce que l'histoire de la maintenance ressemble ici, mais je suis en quelque sorte commencer à pencher dans cette direction. Mon plus gros problème, c'est que j'ai l'impression de nager contre le courant - peu de gens semblent le faire, mais pour un système de grande taille, il semble que ce soit la meilleure option.

pensées?

Répondre

0

Je pense que vous devez utiliser POCO ou DTO pour le transfert de données entre différentes couches d'application. Utilisez ViewModel pour envoyer des données à View. Envisagez d'utiliser Repository Pattern et UoW pour avoir une architecture plus efficace dans ce scénario. Limitez l'utilisation des propriétés de navigation jusqu'au référentiel, sinon elles surchargent l'entité lors du transfert entre les couches (utilisez POCO ou DTO).

Si vous faites comme ci-dessus, alors je ne pense pas que l'utilisation de plusieurs DbContexts vous donnerait quelque avantage. Merci.

Questions connexes