2010-10-02 4 views
1

Je travaille sur un projet qui utilise EntityFramework 4 et j'utilise les objets d'entité comme objets métier. J'ai récemment rencontré un problème dans lequel un contexte était déclaré dans une instruction using dans un contrôle utilisateur. La méthode dans laquelle l'instruction a été renvoyée renvoyait un objet entité qui était utilisé dans un autre contrôle. J'ai donc dû détacher l'entité puis l'attacher au nouveau contexte dans l'autre contrôle. Je voudrais éviter cela si possible. Ce que je pense, c'est que je voudrais déclarer un contexte dans la page maître, puis le passer à n'importe quel page/usercontrol qui en a besoin pour qu'ils utilisent tous le même contexte et que je n'aie pas besoin d'écrire toutes ces instructions.ASP.NET EntityFramework 4 meilleure pratique de contexte de données

Mes questions sont les suivantes:

1) est une mauvaise pratique de déclarer un contexte sur Pre_Init/Page_Load puis disposer sur Page_Unload?

2) si c'est ce qui est la meilleure pratique pour les manipuler?

3) si je fais la route de la déclaration du contexte dans la page principale quelle est la meilleure façon de passer cela aux pages/usercontrols?

Répondre

4

Le plus gros problème est que vous avez couplé le contexte EF à votre couche de présentation. Vous rencontrez ici des problèmes de séparation des préoccupations et cela se manifeste par la confusion du contexte EF. Sans connaître les spécificités de votre application, la meilleure pratique consiste à encapsuler votre contexte EF au-delà d'un modèle de référentiel plutôt que d'exposer directement votre contexte à l'interface utilisateur. Utilisez le référentiel pour obtenir les entités dont vous avez besoin et passez les entités/le modèle. Si vous avez une entité complexe avec des relations parents/enfants, vous devez charger les entités enfants si vous les utilisez de toute façon. Par conséquent, vous pouvez obtenir tout ce dont vous avez besoin dans une seule instruction using.

Si vous voulez envoyer un code, nous pouvons entrer dans des détails plus précis. Mais pour résumer:

  • Ne pas mettre un contexte jamais contrôle utilisateur
  • Obtenez l'ensemble du modèle en haut de votre demande et passe l'entité appropriée à chaque contrôle utilisateur (dans cette demande de niveau supérieur sera votre instruction using traitant du contexte)
+0

Ok. Merci, cela me fera au moins un meilleur chemin. Je suppose que je n'aimais pas l'idée de charger des choses au cas où je n'aurais pas besoin de l'utiliser. – William

Questions connexes