2011-01-23 3 views
1

웹 사이트가있는 프로젝트와 여러 다른 프로젝트에서 사용하는 논리 함수가 포함 된 어셈블리 프로젝트가 있습니다.EF 및 글로벌 리소스에서 메타 데이터를 사용할 위치

엔티티 프레임 워크 모델은 논리 프로젝트에 있으므로 프로젝트간에 사용할 수 있습니다. 메타 데이터 (표시 이름, 필수 속성 등)로 부분 클래스를 작성했습니다.

지금까지는 너무 좋았습니다.하지만 이제 현지화를 구현할 때 웹 사이트 프로젝트에있는 글로벌 리소스에서 표시 이름을 가져와야합니다. 이것에 대한 참조를 추가하는 방법이 있더라도 순환 참조를 만들 것입니다.

누구나 설정하는 방법에 대한 좋은 아이디어가 있습니까? 메타 데이터를 웹 사이트로 옮기지 않아도됩니다.

답변

1

모델에 세계화 또는 서식 지정 특성을 넣지 마십시오. 웹 계층에서보기 모델을 사용해야합니다. 이러한 뷰 모델은 특정 뷰의 요구에 맞게 조정 된 클래스입니다. 이 특정보기에서 필요한 형식화 및 세계화에 대한 속성을 포함하는보기 모델입니다.

그래서 여기에 일반적인 컨트롤러 액션의 워크 플로 :

  1. 이 조치는 모델 조치는 뷰 모델 액션이 반환
  2. 에이 모델을 매핑
  3. 를 가져 오기 위해 저장소를 쿼리에이보기 모델을 통과 보기

모델과보기 모델 간의 매핑을 쉽게하기 위해 AutoMapper을 사용할 수 있습니다.

+0

아직 부분적으로 이야기하고 있습니까? 아니면 내 EF 개체를 전혀 사용하지 않고 각보기에 완전히 새로운 모델을 추천 하시겠습니까? 예를 들어 Create와 Edit 사이에서 코드를 재사용하는 경우 거의 동일한 표시 이름과 요구 사항을 사용합니다. – Andreas

+0

@ Andreas, 각 뷰의 뷰 모델에 대해 이야기하고 있습니다. 물론 모델을 다시 사용하고 있습니다. 내 대답에 1 번 지점을보십시오. Create and Edit에 관한 한 두 가지 작업이 동일하지 않기 때문에 다른 뷰 모델도 있어야합니다. 예를 들어 Create 액션에는 Id 필드가 없지만 Edit 액션에는 ID 필드가있을뿐만 아니라 밸리데이션 로직이 다를지라도 Id 필드가 필요합니다. 뷰 당 모델을 봅니다. 그게 내 철학이야. –

+1

그래서 저는 엔티티 프레임 워크 모델을 사용하지 말아야합니다. 예를 들어, 생성보기의 ID 필드가없는보기 모델을 작성한 다음, 예를 들어 저장할 때 EF 모델과보기 모델간에 속성을 맵핑하십시오. . 나는 그것을 정확하게 이해 했는가? – Andreas

관련 문제