2010-12-02 34 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