2010-11-20 4 views
2

Cette question a été posée des millions de fois, mais je n'ai jamais trouvé de réponse satisfaisante, spécifique à mon problème. Dans mon entreprise, nous traitons avec de grands sites Web de commerce électronique, et nous divisons nos applications en niveaux, qui sont: Présentation, BLL, DAL, Application-specific-framework et Models (POCO) à conserver et transmettre des données à travers des niveaux.Architecture n-tier recommandée avec EF4

Pour accéder à la base de données, nous écrivons du code avec les blocs d'application de données dans le niveau DAL. Les données sont mappées des objets DataReader à Model, qui à leur tour sont transmis à la couche BLL et à la couche Presentation. Je voudrais commencer à utiliser EF4 dans ces grandes applications, mais je voudrais qu'il fonctionne dans un modèle déconnecté (je sais qu'il n'était pas vraiment destiné à cela, mais avec un peu d'effort, il peut être atteint) . Alors, quelle serait la meilleure façon d'intégrer EF4 dans ces niveaux? Je veux dire, devrais-je mettre le fichier .edmx dans le niveau DAL ou dans le niveau Modèle? Dois-je écrire mes propres classes Model et mapper d'une classe Entity Model à l'une de mes classes Model?

Merci d'avance!

Répondre

0

D'après mon expérience, EFx, dans sa forme actuelle (version 4), est le mieux adapté aux applications greenfield. Dans une application établie, nous avons utilisé le modèle généré par EF pour nous. Il était situé dans la couche de données. Cela nous a obligé à référencer la couche de données dans chaque couche de l'application. Pas idéal, mais ça a marché.

Cela dépend de la taille de votre application et de sa complexité, mais nous avons utilisé EF pour les opérations CRUD simples. Pour les requêtes plus complexes, nous avons choisi de les conserver dans la base de données.

+0

Supposons que je crée une nouvelle application. Je voudrais utiliser EF4, mais je ne voudrais pas que ses modèles soient transmis à tous les niveaux (Imaginez que j'expose certaines choses via un service web, il ne serait pas cool de passer un modèle EF4 à l'appelé). Serait-ce la bonne chose à faire pour avoir des modèles POCO dans un niveau Modèle et que la couche DAL les remplisse avant de passer sur la couche BLL? Dans ce cas, la couche BLL transmettrait également les objets POCO à la couche DAL, et la couche DAL devrait alors renvoyer les données dans l'objet POCO à un modèle EF4. Est-ce correct? Merci! –

+1

Cela dépend de la taille et de la durée de vie de votre application. Dans une application plus petite, j'utiliserais simplement le modal généré par EF. Au fur et à mesure que l'application se développe, il serait préférable de déplacer ces classes dans une couche entreprise/entité. Dans une application plus large, je commencerais par les POCO et exploiterais EF. L'inconvénient est que vous perdez une partie du support du concepteur. Ce que vous cherchez est Code-First: http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx. HTH –