2009-06-11 6 views
0

Je développe un site Web ASP.NET 2.0. J'ai créé des couches d'accès aux données et de logique métier. Maintenant, dans la couche de présentation, je renvoie des données de la couche de gestion en tant que jeu de données.Retour des données de la couche de gestion à la couche de présentation

Ma question est de savoir s'il faut utiliser un ensemble de données ou une collection d'objets (par exemple un objet Catégorie représentant la table Catégorie dans ma base de données). J'ai défini toutes les classes qui sont mappées aux tables de base de données (objets communs). Mais il y a des situations où j'ai besoin de tous les enregistrements de la table de catégories dans la couche de présentation. Je suis juste confus. Que devrais-je faire?

+0

@Harper Shelby: Modifier le clobber. Je suis retourné à la mienne depuis parce que vous avez manqué quelques petites choses. – Welbog

Répondre

3

Vous ne voulez pas renvoyer d'ensembles de données, vous voulez renvoyer des objets.

Généralement, lorsque vous disposez d'une couche d'accès aux données et d'une couche de logique applicative, vous souhaitez également disposer d'une couche d'entité. La couche d'entité sera une représentation en mémoire de l'ensemble de résultats de la base de données. Si vous retournez une ligne de la base de données, vous chargez un objet entité. Si vous renvoyez plusieurs lignes, vous allez charger une entité pour chaque ligne et renvoyer une collection d'entités à consommer par la couche de présentation. Si vous utilisez par exemple .net 2.0 et plus, vous pouvez créer des collections génériques du type d'entité et lier facilement différents types de contrôles à ces collections.

J'espère que cela vous sera utile.

0

J'ai utilisé les deux méthodes en fonction de la situation. Si vous avez seulement besoin d'afficher les données d'une table dans une grille, la méthode dataset (ou datatable) n'est pas terrible car si les champs sont ajoutés à la table, ils apparaîtront automatiquement dans la grille ... en supposant que vous remplissez automatiquement grille avec les colonnes. Je regarde cette méthode comme plus de la méthode rapide et sale.

0

Je ne retournerais pas de jeux de données du tout. Vous associez étroitement votre service à votre base de données. À l'avenir, lorsque votre base de données évoluera, vous serez obligé de changer tout ce qui utilise les jeux de données. Vous voulez créer une couche d'abstraction entre la base de données et le service.

+0

Les objets communs sont un peu plus de travail, mais sont mieux à long terme. – eschneider

1

Je recommanderais de renvoyer des objets ou IEnumerable/IList etc des objets. En fonction de votre accès à la base de données, vous pouvez remplir une liste d'objets de catégorie manuellement ou utiliser quelque chose comme LINQ2SQL ou ADO.NET Entity Framework très rapidement et, si nécessaire, les mettre en cache.

0

J'irais avec une solution d'objet/collection. Donc, si vous retournez une ligne d'une table, vous avez un objet, si vous renvoyez plusieurs, vous utiliserez une collection générique. La collection générique évitera un coup de boxe/unboxing.

[modifier] semble que je devancé [/ edit]

0

Vous devez créer une couche d'entité, ayant des classes représentant chaque table dans la base de données. Et puis retournez les listes de ces classes.

Questions connexes