2012-08-20 2 views
0

나는 mongo db에 SQL과 다른 데이터 소스와 상점에서 데이터를 가져 오는 프로젝트를하고있다. 이러한 클래스는건축 모형, DTO 등. MongoDB, MVC 등

그런 다음, 우리가 (경우에 따라)도 NHibernate에 매핑에 사용되는 같은 속성 가상 표시 -

public class Event 
{ 
    public virtual int Id { get; set; } 
    public virtual int Name { get; set; } 
    public virtual int Description { get; set; } 
    public virtual IEnumerable<string> Attendees { get; set; } 
} 

참고 :

나는 예를 들어, 문서에 매핑 수업을 별도의 사용자 클래스/컬렉션 :

public class User 
{ 
    public virtual int Id { get; set; } 
    public virtual int FirstName { get; set; } 
    public virtual int LastName { get; set; } 
} 

내 앱에는 이벤트 목록을 반환하는 EventController가 있습니다. 나는 또한 "실제"수화 된 사용자를 내 이벤트로 되찾기를 원합니다.

그래서 현재는 다른 프로젝트/네임 스페이스에 위의 2 가지 클래스 (이벤트 및 사용자)가 있습니다. 이 경우, 그들은 마른 내 컨트롤러를 유지하기 위해, 그리고 중복 클래스

public class Event 
{ 
    public virtual int Id { get; set; } 
    public virtual int Name { get; set; } 
    public virtual int Description { get; set; } 
    public virtual IEnumerable<User> Attendees { get; set; } 
} 

public class User 
{ 
    public virtual int Id { get; set; } 
    public virtual int FirstName { get; set; } 
    public virtual int LastName { get; set; } 
} 

근처가 어떤 MyApp.Model

, 내가

그때가 다른 네임 스페이스가라는 MyApp.DTOs에있어 Model.Event를 반환하고, 거기 저장소/DB 로직을 캡슐화하는 이벤트 서비스 :

이벤트 문서 (DTOs.Event) 사용자 문서를 가져옵니다 (DTOs.User) 모를 만들 수 사용 automapper 받기 el.User

더 좋은 방법이 있을지 궁금해합니다. 중복 코드가 많이 생성됩니다.

답변

2

불행히도 모델을 도메인과 구별하려면 DTO가 모델과 일치 할 때 특히 코드 복제가 필요할 수 있습니다.

주로 선호하지만 모델은 사용자의 견해에 노출되어 있어야하며 도메인 또는 매핑 된 nh 개체와 관련이 없어야합니다.