2013-02-18 1 views
0

내 도메인 계층과 GUI를 분리하고이를 수행 할 수있는 다양한 방법을 모색하면서 내가 계속 묻는 한 가지 이유는 왜 그렇게 어려운 것입니까? 왜 데이터에 대한 모든 추가 코드가 obejcts인지, 그런 다음에 값을 복사하거나 가져 오는 속성의 모든 추가 매핑이 더 쉬운 방법이되어서는 안됩니까?EF Designer와 같은 매핑 도구가 있지만 데이터 개체의 경우?

그런 다음 MS Access를 사용하여 작은 littler db app를 사용했을 때 생각났습니다. 액세스에는 다이너 셋 개념이 있습니다. 기본적으로 다이너 셋은 업데이트 가능한보기를 제외하고는 SQL Server보기와 같은보기입니다. 따라서 MS Access 폼은 View/Dynaset을 기반으로하므로 관련된 모든 개별 테이블의 세부 사항을 알 필요가 없습니다. 나에게 Data 객체 패턴처럼 들린다. 이제 Access에서 20 년 동안이 작업을 수행 했으므로 프레젠테이션에서 엔티티를 추상화하는 엔티티 프레임 워크 용 Dynaset, View, Mapping 도구가 없습니까? 내가 모르는 사람이 있습니까? 제 3 당?

의견이 있으십니까?

답변

0

올바르게 이해하면 POCO 엔터티가있는 Entity Framework가 필요할 수 있습니다. 템플리트에 대한 온라인 갤러리에서 해당 템플리트를 찾을 수 있습니다 (프로젝트에 새 항목 추가시). 또는 .edmx 디자인보기에서 마우스 오른쪽 버튼을 클릭하고 "코드 생성 항목 추가"를 선택하고 Fluent Generator를 선택할 수 있습니다.

이 메서드는 기본 올인원 EF 생성 파일 대신 여러 파일을 만듭니다. 이러한 파일 중 하나는 DbContext (ObjectContext와 반대)이며, 하나는 엔티티 만 포함하고 (일반 C# 개체, 속성 또는 기타 항목, 일반 개체) 엔피니티에는 유창한 규칙 형태로 생성 된 매핑이 포함되어 있습니다.

이 단계에서는 엔티티 파일을 템플릿에서 분리하고 다른 어셈블리로 이동할 수 있습니다. 또한, EF 인프라 스트럭처에 독립적 인 엔티티가 있습니다. 이전에했던 것처럼 이러한 엔티티에 컨텍스트를 전달할 수 있으며 자체적으로 매핑을 수행합니다.

AutoMapper과 같은 도구를 사용할 수도 있지만 수동으로 매핑을 제공해야합니다. 이는 많은 작업이지만 경우에 따라 적절할 수 있습니다.

+0

예, 이미 POCO 생성을 위해 EF를 사용하지만, 포항 강판은 프리젠 테이션 계층에 표시되지 않을 수 있습니다 나는, 층의 seperation에 대해 이야기하고있다. AutoMapoper는 1t 1지도처럼 보이는 것으로 생각했던 것과 매우 비슷하게 보입니다. 반면에 View에서와 마찬가지로 manty tavbles와 field map이 GUI에서 사용되는 하나의 결과 세트로 매핑됩니다. 예 : Customer, Order, OrderItems, ShipMethod => 프리셋 레이어의 One OrdetrInfo 객체로 모두 정리하겠습니까? – JAMES

+0

매우 엄격한 레이어 분리처럼 들립니다. 개인적으로 POCO 엔티티를 모든 레이어에서 공유하는 응용 프로그램의 핵심으로 선호합니다. 데이터 지속성은 DB 매핑을 수행하고 DTO 매핑은 DTO 매핑을 수행하지만 여전히 두 레이어 모두 해당 엔티티를 볼 수 있습니다. 뷰와 같은 매핑에 관해서는, 나는 그런 도구를 모른다. 미안하다. –

+0

그것은 꽤 표준 MVC 엔터 프라이즈 소프트웨어 물건입니다. 하지만 나는 그저 엔티티 자체를 사방에 사용하는 것이 더 쉽지만, 요즘 건축가들과 같이 근사하지는 않습니다. – JAMES

0

좋은 디자인은 작업이 필요합니다. 그것이 쉬운 경우에, 모두는 그것을 자동적으로 할 것입니다. 결국, 모든 사람들은 가능한 한 최소한의 작업을 원합니다.

불만을 토로하는 모든 것들은 좋은 디자인 과정의 일부이며, 좋은 디자인을 원한다면 주위를 둘러 볼 필요가 없습니다.

바로 가기를 사용하려면 꼭 건너 뛰십시오. 그것은 당신의 코드입니다. 어떤 것도 당신이 어떤 특정한 방법으로 일을 할 것을 요구하지 않습니다.

액세스는 웹 응용 프로그램이 아닌 데스크톱 응용 프로그램이기 때문에 많은 일을 할 수 있습니다. 웹 응용 프로그램은 데스크톱 응용 프로그램과 어떻게 근본적으로 다릅니 까? 설계 방법, 작동 방식 및 직면 한 문제점이 다릅니다. 예를 들어, 귀하가 무국적 환경을 가지고 있으며 요청에서 요청 결과를 유지할 수 없다는 사실은 사람들이 Access에서 웹 앱에서 할 수없는 많은 것들을 취할 수있게합니다.

특히보기를 사용하려면 그렇게 할 수 있습니다. 뷰는 올바르게 설계되었지만 일반적으로 뷰의 한 테이블에만 영향을주는 업데이트 문이 필요한 경우 업데이트 할 수 있습니다. EF는 뷰와 함께 작업 할 수 있지만 처리해야하는 많은 단점이 있습니다.

데이터 매퍼 패턴은 레이어 및/또는 계층 간의 염려를 깨끗하게 분리하는 가장 쉽고 직접적인 방법이기 때문에 웹 디자인에서 일반적인 패턴으로 나타났습니다. 개발 프로세스 내에서 이들을 작동시키는 방법을 찾도록 제안합니다.

MVC가 사용하기에 가장 적합한 프레임 워크가 아닐 수도 있습니다. Acceess와 같은 방식으로 웹 응용 프로그램을 구축하려는 것처럼 들리지만 Visual Studio Lightswitch가 더 나은 선택 일 수 있습니다.

http://msdn.microsoft.com/en-us/library/ff851953.aspx

+0

나는 당신이 말하는 모든 것과 내가 자르려고하는 유일한 "코너"에 동의합니다. 뷰 또는 다이너 셋의 장점 인 모든 필드와 자동 바인딩을 앞뒤로 처리하는 수동 코딩입니다. 나는 EF가 DB에서 POCOS를 자동 생성하는 방법과 같은 개념을 생각하고 있는데 왜 POCO에 매핑 된 View 수준의 객체를 생성 할 수있는 디자이너가 없습니까? – JAMES

+0

@DjAMES - 디자이너가 필요하면 클래스 디자이너를 사용하십시오. –

+0

아니요, 저는 클래스 디자이너 이상의 것을 원합니다. 나는 엔티티 프레임 워크와 똑같은 도구를 원한다. 엔티티 프레임 워크 위에 앉아서, POCOS와 상위 수준의 데이터 객체 사이에서 데이터 전송을 앞뒤로 관리하고, obejcts를 동기화 상태로 유지한다. – JAMES