2010-06-08 5 views
2

Dans de nombreux articles concernant ce sujet, je tombe sur des exemples très simples qui ne répondent pas à ma question.Découplage en DAL et BLL - mes préoccupations

Supposons que nous ayons une table de document et une table utilisateur. Dans DAL écrit dans ADO.NET, j'ai une méthode pour réessayer tous les documents pour certains critères. Maintenant, je l'UI J'ai un cas où je dois montrer cette liste avec les noms du créateur.

Pour le savoir Je l'ai fait avec une méthode dans l'instruction DAL containig JOIN. Cependant chaque fois que j'ai une méthode si complexe que je dois faire un mappage personnalisé à un objet qui ne marque pas 1: 1 à DB.

Devrait-il être placé dans une autre couche? Si c'est le cas, je devrai passer de la requête jointe à l'itération à travers les résultats et interroger chaque auteur de document. . . ce qui n'a pas de sens ... (performance)

quelle est la meilleure approche pour de tels scénarios?

Répondre

1

Pour votre ui, ma suggestion est d'avoir un dto (un viewmodel pour les personnes mvp/mvc) qui contient les données de l'utilisateur et la liste de documents correspondante.

Le mappage personnalisé sera toujours présent, donc je vous suggère de jeter un oeil à Automapper ici pour soulager ces douleurs de cartographie.

0

J'ai rencontré la même chose par le passé en créant mes propres couches d'accès aux données personnalisées. Vous voulez que vos objets soient mappés de un à un avec votre base de données, mais il suffit souvent d'écrire une fonction personnalisée pour récupérer les données de jointure internes. Je ne mettrais pas ces actions personnalisées dans leur propre couche.

Parfois, ce que j'ai fait a été créé une classe générale qui était chargée de récupérer des données pour les grilles, les listes déroulantes, etc., qui joignaient les informations d'un certain nombre de tables. Cette classe renvoie des objets personnalisés contenant les résultats récupérés. Si vous n'êtes pas satisfait d'un outil qui effectue un mappage personnalisé automatique pour vous, je vous suggère de créer votre propre utilitaire de générateur de classe de mappage automatique.

Tant que vous divisez votre application en couches d'accès aux données, d'entreprise et d'interface utilisateur, je pense que vous vous dirigez dans la bonne direction.

Questions connexes