2010-08-23 4 views
2

WCF RIA Services로 Silverlight 4 응용 프로그램을 만들고 있습니다.클라이언트 측에 사용자 지정 서버 측 Entity Framework 속성 표시

서버 측 (*.Web 프로젝트)에는 SQL Server 데이터베이스에서 자동 생성되는 엔터티 모델이 있습니다. 클라이언트 측에서 Silverlight 어셈블리에서 사용하기 위해 Visual Studio에서 생성 된 도메인 서비스 및 프록시 개체가 있습니다.

사용자 지정 속성을 모델에 추가하고 싶습니다 (서버 쪽이 바람직 함). 외래 키 (실제 외래 키 제약은 아님)로 연결된 Contact, CompanyAddress 테이블이 있다고 가정 해보십시오. ContactCompanyAddress 개체를 반환하는 속성을 추가하고 싶습니다.

난 부분 클래스를 만들어 Contact 클래스를 확장하고 CompanyAddress { get; } 속성을 추가하여이 작업을 시도했습니다. 하지만 클라이언트 측에서 자동 생성 된 코드로 전파하기 위해 새 속성을 사용하여 수행해야 할 작업에 대해 알지 못합니다. 이 속성에 추가해야하는 특정 속성이 있습니까? 코드 생성기가 알 수 있도록 어딘가에 등록해야합니까?

네비게이션 속성 일 필요가 있습니까? 아니면 더 간단 할 수 있습니까?

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 아니면 서버 측 모델을 확장하고 클라이언트 측에서 수행해야합니까? (클라이언트 측에서 수행 할 경우 개별 Entity 클래스에서 컨텍스트 개체에 액세스하지 못하는 문제에 직면합니다.)

답변

-1

Silverlight 또는 RIA 서비스를 사용한 적이 없지만 상당히 유용 할 것입니다. 비슷한. EF 모델을 만들고 외래 키와 관련된 엔티티 (관계가 있어야 함)가있을 때 다른 엔티티와 관련된 각 엔티티에는 네비게이션 속성이라는 것이 포함됩니다. 따라서 귀하의 시나리오에는 주소가 등록 된 회사 및 회사 이름이 들어있는 자산이 포함되어야합니다. ObjectSet에 포함 또는 지연로드 (WCF에서는 좋지 않은 아이디어)를 사용하여 탐색 속성을로드하도록 EF를 생성 할 수 있습니다. WCF를 통해 고객에게 연락처를 보내는 경우보다 회사 및 주소도 함께 전송됩니다.

귀하의 접근 방식에는 큰 문제가 있습니다. 속성에 getter 만 포함되어 있습니다. 이러한 속성은 직렬화되지 않습니다.

+0

현재 기존 데이터베이스 스키마를 수정할 수 없으므로 생성 된 .edmx 파일에 이미 존재하는 외래 키 관계에 의존 할 수 없습니다. 스키마 *는 앞으로 변경 될 수 있고 edmx 파일을 다시 생성 할 때 수정 사항을 덮어 쓸 수 있기 때문에 .edmx 파일을 수동으로 수정하면 안됩니다. – kpozin

+0

속성에 setter를 추가하고 생성 된 엔터티 클래스에 DataContract 특성이 있는지 확인하십시오. 그렇다면 DataMember 특성으로 속성을 표시하십시오. –

+0

지금까지 도와 주셔서 감사합니다. 저는 세터를 추가하고 [DataMember]로 속성을 표시했습니다. 이것은 아무 효과가 없습니다. 이 속성은 Generated_Code의 Contact 프록시 클래스에 추가되지 않습니다. \\ *. Web.g.cs – kpozin

관련 문제