0

보호 된/개인 회원과 함께 EF5 코드 첫 번째 엔티티를 디자인하는 방법 그래서이 DDD 서적을 읽는 동시에 새로운 시스템을 설계하고 있습니다. DDD 서적에는 엔티티가 ID 및 기타 값과 같은 개인 회원을 갖는 예제가 있습니다.DDD 스타일

예를 들어 우리는 사용자 엔티티가 있으며 이드에는 참석할 수있는 코스와 ID가 있습니다.

그런 다음 DDD 스타일에서 사용자 엔티티에 있다고 말하면 GrantRightTo (코스 c)와 같은 것을 사용합니다. 그 기능은 사용자가 너무 많은 코스에 가입하는 것처럼 비즈니스 규칙을 확인할 수 있기 때문에 모든 것이 좋습니다. 똑똑한!

누구나 코스 컬렉션에 대한 권한을 가지고 있지만 컨트롤러가 좋지 않은 비즈니스 규칙을 알아야 할 수도 있습니다.

이제는 EF 코드의 문제점이 있습니다. 제 책이 그것을 수행하고 여전히 지속되는 (dbcontext) 것처럼 비공개/보호 된 코스 모음을 얻을 수 없습니다. 그래서 어떻게해야합니까?

물론 public 컬렉션을 가질 수 있지만 여전히 GrantRightTo와 같은 메서드가 있지만 다른 개발자는 잘못된 방식으로 그렇게하지 않을 수도 있습니다.

어떻게해야합니까?

답변

2

이 작업을 수행하는 가장 좋은 방법은 데이터베이스 모델을 DTO (데이터 전송 개체)와 매핑하는 것입니다.

DTO 모델로 추가 레이어를 만듭니다. 실제 도메인 모델은이 DB 모델을 기반으로 할 수 있습니다. 도메인 모델에서는 기본 모델의 차이점을 추상화 할 수 없습니다.

프로젝트에 수직 변경이있는 경우 두 모델을 모두 유지해야하는 단점이 있습니다. 그러나 도메인 모델을 실제 데이터베이스 모델과 독립적으로 변경할 수도 있습니다.

+0

답변 해 주셔서 감사합니다. 유지되어야하는 다른 레이어를 추가하는 것은 약간 짜증나게 들립니다. 이 방법이 권장되는 경로입니까, 아니면 단순히 다른 디자인을 모두보아야합니까? –

+0

응용 프로그램에 따라 크게 달라집니다. 이것이 하나의 방법이지만, 내가 말했듯이, 장점과 단점이 있습니다. 귀하는 귀하의 특정 애플리케이션을 실제로보고 자신의 상황에 가장 적합한 것이 무엇인지 확인해야합니다. 불행히도 여기에 은색 글 머리 기호가 없습니다 – Kenneth

+0

이 솔루션은 어떻습니까? http://blog.oneunicorn.com/2012/03/26/code-first-data-annotations-on-non-public-properties/ 사실 일부 코드가 있습니다. 저장소에 관한 엔티티에서는 여전히 이론적으로 저장소에 독립적입니다. 여분의 레이어가 필요 없게됩니다. –