2010-12-02 27 views
4

1) Je veux savoir quelle est la manière recommandée de créer & retourner un DTO pour un objet qui a 10 attributs et je veux seulement retourner 2 avec mon objet DTO.Comment créer un DTO dans asp.net?

2) Les DTO devraient-ils avoir leur propre espace de noms? Si oui, comment les organisons-nous? Chaque DTO dans un seul fichier de classe ou tous les DTO dans une seule classe?

Veuillez me fournir quelques exemples de code.

Répondre

10

Les DTO sont des objets stupides composés de getters/setters publics. Je les place généralement dans un espace de noms distinct appelé SomeProject.Dto. En général, j'essaie de garder les mêmes noms de propriété entre le DTO et la classe de domaine correspondante, éventuellement avec un certain aplatissement. Par exemple, mon client pourrait avoir un objet d'adresse, mais mon DTO aurait que aplati à:

public class CustomerDto { 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string HomeStreet { get; set; } 
    public string HomeCity { get; set; } 
    public string HomeProvince { get; set; } 
    public string HomeCountry { get; set; } 
    public string HomePostalCode { get; set; } 
} 

Vous pouvez réduire considérablement la quantité de code de mappage répétitif de traduire des objets de domaine en DTO en utilisant AutoMapper de Jimmy Bogard.

http://automapper.codeplex.com/

+0

Merci pour l'exemple et l'explication James =) Mettez-vous chaque DTO dans un fichier séparé ou tous les DTO dans un seul fichier? Ne vous terminez pas avec beaucoup de nouveaux fichiers de classe juste pour les DTO seuls? –

+2

J'ai mis chaque DTO dans des fichiers séparés. Ils sont tous dans un dossier distinct, qui est facilement effondré et ignoré. :) –

+0

@JamesKovacs aurait-il un réel avantage à utiliser des structures avec seulement des champs membres (pas de getters et setters) au lieu de classes? –

1

Votre question est très ouverte. Les réponses dépendent de l'échelle de votre application.

En général, je crée mes DTO ou ViewModels dans leur propre assemblage. Pour obtenir mes DTO, j'ai une couche de service qui s'occupe de les créer en fonction de ma demande.

Si vous voulez des exemples concrets, jetez un œil à quelques exemples d'Asp.NET MVC sur asp.net. Bien que vous n'utilisiez peut-être pas MVC, vous pouvez au moins voir comment les ViewModels sont créés.

+0

Merci Brownman. Mon échelle d'application n'est pas si grande. Cependant, lors de la création d'un DTO, je finis par créer des fichiers de classes séparées pour le DTO de base (en ne renvoyant qu'un seul attribut). Ce que je veux savoir, c'est comment réduire les fichiers de classe et gérer efficacement mon DTO. Je jetterai un coup d'oeil à MVC. –

+0

un lien spécifique sur les exemples Asp.NET MVC sur asp.net? – atiyar

+0

En passant par les tutoriels sur asp.net, vous obtiendrez de bonnes idées. Voici un article qui peut aussi aider, http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx. – Brownman98