2010-04-26 2 views
0

나는 asp.net mvc에서 begginer이고 나는 약간의 의혹이있다.저장 방법에서 엔티티 가져 오기, 올바른 양식은 무엇입니까?

P.S : 나는이 컨트롤러에서 작업을

내용은 DDD를 사용하고 있는데이 (데이터베이스 용) 저장소에 의해 (내 모델) 엔티티를 절약 할 수 있습니다. 내가보기에 정보를 가져 와서 내 컨트롤러의 저장소로 저장하려면 어떻게해야합니까?

공공 ActionResult 저장 (제품 제품) { // 객체의 유효성을 검사
//이 저장소
반환보기에 데이터를 저장 : 이 같은 컨트롤러의 저장 방법에 내 모델의 엔티티를 얻기 위해 그것을 정확 ("성공"); }

또는 DTO (내 엔터티와 유사한 구조로)를 가져와 속성 별 속성을 엔터티에 전달하는 개체를 만들 필요가 있습니까? FormCollection을 좋아하지 않아서 구조적으로 권장되는 것은 무엇입니까?

덕분에 많이들

만큼 양식이 제품의 필드와 일치하는 필드가 있습니다, 그들은 자동으로 값을 기준으로 채워해야 건배

답변

1

Blue Book에서 설명한대로 DDD 관례를 따르고 싶습니다. 도메인 개체가 데이터베이스에서 생성되거나 검색되는 얇은 '응용 프로그램'계층으로 전달 될 수있는 DTO에보기를 바인딩해야합니다. 이 응용 프로그램 계층은 메서드가있는 간단한 외관 일 수도 있고 명령 패턴을 활용할 수도 있습니다.

라이브 데모는 내 프로젝트를 볼 수 있습니다. - DDDSample.NET

0

. 엔티티를 저장하는 방법은 새 레코드를 만들거나 기존 레코드를 편집하는 등 데이터 모델에 따라 다릅니다.

1

일반적으로 ASP.NET MVC에서 컨트롤러 작업은 DefaultModelBinder에 의해 반환 된 강력한 형식의 개체를 받게됩니다. 엔티티 유형을 편집 할 때 이 패턴을 사용하면 GET 뷰에 "Product"를 단독으로 또는 DTO의 일부로 전달한 다음 "저장"메서드가 매개 변수 목록에 "Product"개체를 받게됩니다.

이름이 일치하는 편집기 템플릿 또는 필드 (예 : Html.TextBox("Name")Product.Name에 해당)를 사용하는 경우 DefaultModelBinder가 작업 메소드에 전달 된 입력 된 엔터티 개체를 올바르게 채울 수 있어야합니다. 특정 가장자리 경우를 제외하고는 FormCollection을 망칠 필요가 없습니다.

1

이러한 종류의 문제는 view model을 추가하여 수정할 수 있습니다.

기본적으로 뷰 모델은 특정보기에 데이터를 제공하는 DTO입니다. 비슷한 방식으로 뷰 모델은 모델 바인딩을 통해 뷰에서 데이터를 다시 얻는 데 사용됩니다. 그런 다음 컨트롤러는 도메인 모델에 필요한 데이터를 전달합니다.

관련 문제