2010-12-02 73 views
4

1)我想知道什么是建议&返回一个DTO的对象有10个属性,我只想返回2与我的DTO对象。如何在asp.net中创建DTO?

2)DTO应该有自己的命名空间吗?如果是,我们如何组织它们?单个类文件中的每个DTO或单个类中的所有DTO?

请提供一些示例代码。

回答

10

DTO是由公共getter/setters组成的哑对象。我通常把它们放在一个名为SomeProject.Dto的独立名称空间中。

public class CustomerDto { 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public LocationDto HomeAddress { get; set; } 
} 

我通常会尽量保持DTO和相应的域类之间的属性名称相同,可能有一些扁平化。例如,我的客户可能有一个地址的对象,但我的DTO可能是夷为平地:

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; } 
} 

您可以通过使用吉米博加德的AutoMapper大幅减少的翻译域对象进入的DTO的重映射代码量。

http://automapper.codeplex.com/

1

你的问题是非常开放的。答案取决于您的应用程序的规模。

一般来说,我在自己的程序集中创建自己的DTO或ViewModels。为了获得我的DTO,我有一些服务层负责根据我的要求创建它们。

如果你想具体的例子看看在asp.net的一些Asp.NET MVC示例。虽然你可能没有使用MVC,但至少可以看到ViewModel是如何创建的。

+0

谢谢布朗曼。我的应用规模并不大。然而,在创建一个DTO的时候,我甚至会为基本的DTO创建分离类文件(只返回1个属性)。我想知道的是如何有效地减少类文件和管理我的DTO。我将看看MVC。 – 2010-12-02 05:02:42

+0

asp.net上的Asp.NET MVC示例的任何特定链接? – atiyar 2011-05-02 13:00:01