2010-12-02 3 views
4

1) 저는 &을 만드는 데 권장되는 방법이 무엇인지 알고 싶습니다. 10 개의 속성을 가진 객체에 대해 DTO를 반환하고 DTO 객체로 2 개만 반환하려고합니다.asp.net에서 DTO를 만드는 방법은 무엇입니까?

2) DTO의 고유 한 네임 스페이스가 있어야합니까? 그렇다면 어떻게 구성합니까? 단일 클래스 파일 안의 각 DTO 또는 단일 클래스 안에있는 모든 DTO?

몇 가지 샘플 코드를 제공해주십시오.

답변

10

DTO는 공용 getter/setter로 구성된 멍청한 개체입니다. 일반적으로 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; } 
} 

당신은 극적으로 지미 Bogard의 AutoMapper를 사용하여 DTO들로 도메인 개체를 번역 반복적 인 매핑 코드의 양을 줄일 수 있습니다.

http://automapper.codeplex.com/

+0

샘플 및 설명 주셔서 감사합니다 James =) 각 DTO를 하나의 파일 안에 별도의 파일 또는 모든 DTO 안에 넣습니까? DTO만을위한 새로운 클래스 파일로 끝내지 않습니까? –

+2

각 DTO를 별도의 파일에 넣었습니다. 그것들은 모두 별도의 폴더에 있으며 쉽게 붕괴되고 무시됩니다. :) –

+0

@JamesKovacs 클래스 대신 멤버 필드 (getter 및 setters 없음) 만 사용하여 구조체를 사용하면 어떤 이점이 있습니까? –

1

귀하의 질문은 열려 있습니다. 대답은 응용 프로그램의 규모에 따라 다릅니다.

일반적으로 나는 자신의 어셈블리에 내 DTO 또는 ViewModel을 만듭니다. 내 DTO를 얻으려면 내 요청에 따라 서비스 레이어를 만들어야합니다.

구체적인 예제를 보려면 asp.net의 Asp.NET MVC 예제를 살펴보십시오. MVC를 사용하지 않을 수도 있지만 ViewModel이 어떻게 생성되는지 적어도 알 수 있습니다.

+0

감사합니다. Brownman. 내 응용 규모는 그렇게 크지 않습니다. 그러나 DTO를 만드는 동안 기본 DTO (1 속성 만 반환)의 경우에도 seprate 클래스 파일을 만듭니다. 내가 알고 싶은 것은 클래스 파일을 줄이고 효율적으로 DTO를 관리하는 방법입니다. MVC를 살펴볼 것입니다. –

+0

asp.net에서 Asp.NET MVC 예제에 대한 특정 링크가 있습니까? – atiyar

+0

asp.net에서 자습서를 통해 좋은 아이디어를 얻을 수 있습니다. http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx에 도움이 될만한 기사가 있습니다. – Brownman98

관련 문제