2011-01-30 5 views
2

이 ASP.NET 응용 프로그램을 3 단계 시스템으로 설계하고 있습니다. 서비스 레이어, 데이터 레이어 및 사용자 인터페이스. 또한 내 데이터 스키마에 올바르게 매핑 된 서비스 계층에서 POCOS를 사용하고 있습니다. 내 데이터 계층은 저장소 패턴을 따릅니다.내 서비스/데이터 계층의 매개 변수로 사용되는 개체 또는 값

제 질문은 : 내 서비스 레이어/데이터 레이어에서 내 도메인 엔터티를 내 메서드의 매개 변수로 사용해야하나요, 아니면 모든 속성을 병합해야합니까? 여기에 가장 좋은 방법은 무엇입니까 :

이 :

public void AddProduct(ProductDTO newProduct) 

나 :

내 인상은 첫 번째가 더 나은 것입니다, 문제는 ObjectDataSource를가 그것을 잘 재생되지 않는다는 것입니다
public void AddProduct(string ProductName, int Category) 

, 첫 번째 접근 방식을 사용하는 객체를 데이터 바인딩하는 대안이 있습니까? 아니면 수동 바인딩을 사용해야합니다.

+1

개체에 20 개의 속성이있을 때 수행 할 작업은 무엇입니까? 물론 DTO를 사용하십시오! –

+0

그리고 그 DTO를 어떻게 묶어 웹 폼 (webform)을 만들 수 있습니까? ObjectDatasource는 그들을 지원하지 않으며 UI에서 20 개의 속성을 수동으로 바인딩하는 것은 고통 스럽습니다. – Luis

+0

주석 주셔서 감사합니다. 나는 내 자신의 데이터 바인딩 프레임 워크를 작성하고 objectdatasource를 모두 삭제했다. – Luis

답변

4

확실히 DTO를 사용하십시오. 그렇지 않으면 제품에 속성을 추가하거나 제거 할 때마다 모든 호출, 전달 및 호출 된 메서드에서 매개 변수를 추가 및 제거하게됩니다.

DTO를 사용하면 호출 및 호출 된 메서드를 변경/업데이트하고 전달해야하는 매개 변수의 수만 생각하면됩니다.

+0

이러한 DTO를 웹 폼에 어떻게 바인딩합니까? 뒤에있는 코드의 이벤트를 사용하여 폼의 컨트롤에 수동으로 바인드해야합니까? – Luis

+0

현재 바인딩은 무엇입니까? 해당 객체에 바인딩 한 다음 자동 매퍼와 같은 것을 사용하여 DTO에 매핑 할 수 없습니까? – Divi

+0

그래서 내가 제품 proeprties, 이름, 카테고리 등을 삽입 할 입력 양식이 있다고 말합니다. 버튼 누르기에 추가하려면 다음과 같이해야합니다. DTO의 인스턴스를 만들고 양식의 모든 프로 필을 DTO에 수동으로 바인딩합니다. 속성을 정의하고 DTO를 매개 변수로 사용하여 Service 메서드를 호출합니다. 플랫 속성을 사용하는 경우 objectdatasource를 설정하면됩니다. – Luis

관련 문제