2016-09-16 1 views
0

나는이 답변을 어디에서나 찾아 내려고 노력해 왔으며 필자가 필요로하는 올바른 핵심 단어를 모르는 경우가 있으므로 여기에서 대답을 찾기를 바랍니다. 내가 수행하려고데이터 영역과 논리 계층 간의 데이터 매핑/변환

데이터베이스 <> 데이터 레이어 <> 로직 레이어 <> UI

데이터가 논리 계층에 도달 : 그래서이 프로젝트를 구축하고

같은 연결 경미한 전환. 먼저, 코드를 보여줄 것이고, 내가하려고하는 것을 설명 할 것입니다.

public class PersonDao 
{ 
    public int PersonID { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public int GenderID { get; set } 
} 

그리고 다음과 함께 'GenderDao'개체 : 로직 계층에서

public class GenderDao 
{ 
    public int GenderID { get; set; } 
    public string Name { get; set; } //this essentially holds 'male' and 'female' 
} 

, 내가

은 내가 'PersonDao'아래의 설정과 데이터 레이어 내 개체가 로직 레이어 내에서 데이터 레이어를 반영하는 'PersonDto'객체가 있어야합니다.

public class PersonDto 
{ 
    public int PersonID { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public int GenderID { get; set } 
} 

물론 'Gende 내가 뭘하려고 오전이 정보,

public class GenderDao 
{ 
    public int GenderID { get; set; } 
    public string Name { get; set; } 
} 

이제 데이터 레이어 내에서의 대응을 반영 rDto '객체는 자동 매핑 또는 저를 자동으로 GenderDto.Name 일치시킬 수 있습니다 변환의 형태를 만드는 중입니다 PersonDto.GenderID로 이동하십시오. 기본적으로 내가 원하는 :

PersonDto.GenderID = GenderDto.Name GenderDto.GenderID ==이

을 PersonDto.GenderID뿐만 아니라이 매핑을 반대 곳.

  • 이름 : 존
  • 성 : 미상
  • 성별 : 남성

    최종 목표는 UI 층에서, 사용자가 사람의 프로필을 뽑을 수와 같은 것을 볼 것입니다

사용자는 위의 동일한 정보를 양식에 입력하여 논리 레이어에 전달할 수도 있습니다. 논리 레이어는 성별 이름을 다시 GenderID로 변환하여 논리 레이어가 될 수 있도록합니다. 데이터베이스에 저장됩니다.

도움을 주시면 대단히 감사하겠습니다. 감사합니다.

+0

무엇이 문제입니까? – Nix

+0

기본적으로 DAL 내에 엔티티 프레임 워크에 대한 매핑이 이미 있으며 AutoMapper가 이미 설치되어 있습니다. 하지만 BLL (Logic Layer)에서 매핑을 변환하여 UI 레이어에서 데이터를 볼 때 int 표현 대신 성별 (여성/남성)을 얻을 수 있기를 바랍니다. – Azu

+0

차례로, 사용자가 male/female을 입력 할 때 데이터베이스가 표 형식의 데이터에 적용 할 int 표현을 얻도록 – Azu

답변

0

원하는 것은 객체 관계형 매핑입니다. 이것이 Entity Framework에서 달성 할 수있는 목표입니다. Entity Framework와 같은 것을 구현하거나 직접 관계형 매핑 논리를 작성해야합니다.

+0

Entity Framework이 DAL 내에 이미 있고 관계형 매핑의 경우, 그것은 내가 고투하고있는 곳이다. 나는 내가 읽었으며 모든 것이 실패로 끝난 많은 것들을 시도했다. 몇 가지 예 : - 활용 시도 .Where() - LINQ 시도 중 (그러나 내가 수행하려고했던 것과 관련된 정보를 찾을 수 없음 - 문제 일 수 있음) - 시도 .ForMember()를 사용하여 매핑의 일부분을 재구성하십시오. – Azu

+0

사랑 스러움에 감사드립니다. 어떻게 당신의 조언을 간과했는지 모르겠지만 ORM에 대한 연구를 할 것입니다. 추가 지원이 필요한 경우, – Azu

+0

ORM을 조사하면 필요한 답을 찾는데 도움이되었습니다. 다시 고마워요. Loveless – Azu

5

또한 AutoMapper 내부의 사용자 정의 투영을 볼 수도 있습니다. 문제는 이러한 예상치가 다른 EF 사물에 액세스해야하는 경우 문제가되는 것입니다.

DAO는 DTO와 거의 비슷합니까? 그렇다면 DTO를 모두 피할 것이고, 그들은 어떤 가치도 추가하지 않을 것입니다. DAO를 직접 사용하십시오.

일반적으로 내 DTO는 뷰 모델이 무엇인지, 단지 몇 가지 속성 인 EF의 내 엔티티 중 일부입니다. 내보기 모델은 작업/명령을 나타 내기 때문에지도를 실제로 뒤집 지 않습니다. 나는 계층화 된 아키텍처를 구축하려고하지 않을 것입니다. 단지 거기에는 가치가별로 없습니다. 많이 돌아 오지 않는 유형이 많습니다.