2012-04-20 4 views
0
class Profile { string name; Book[] books} 

class Book { string name } 

두 개의 프로필 (A와 B)은 모두 같은 책과 관련이 있습니다.RIA Silverlight에서 동일한 인스턴스를 두 번 만듭니다.

WCF/RIA를 사용하여 Silverlight에서 프로필을 하나씩로드 할 때. 나는 같은 이름으로 두 권의 책 객체로 끝난다. (같은 책!). RIA에서 책이 이미 실버 라이트에 있음을 감지하고 두 번째 이미지를 만드는 대신 기존 인스턴스를 사용하겠습니다.

이들은 POCO (DB에없는 복잡한 개체)입니다.

RIA에게 이름이 고유하고 동일한 이름을 가진 Silverlight (RIA 클라이언트 측)에 두 개의 인스턴스가있을 수 없다는 것을 어떻게 알 수 있습니까?

업데이트 나는 이후에 해결 방법을 구현했는지 묻는 이래로 나는 우아한 해결책이라고 생각하지 않는다. 그러나 여기에 있습니다 : GetProfile의 콜백 메서드는 모든 profile.books를 탐색하고 각 사전이 이미 로컬 사전에 있는지 확인하는 메서드로 대체되었습니다. 책이 국지로 존재하면 국지 서적이 사용되고 두 번째 인스턴스는 삭제됩니다. 그렇지 않으면 책이 사전에 추가되어 사용됩니다.

해결 방법 내 책 클래스 클라이언트를 만든 다음 RIA에서 만든 책을 내 책 유형으로 변환합니다. 업데이트 된 서적을 다시 서버로 보내면 RIA Books의 인스턴스를 만들고 속성을 업데이트하기 전에 OnDeserializing() 및 OnDesriallized()를 호출합니다. 그래서 RIA-Book을 편집 할 수 있습니다.

+0

각 프로필에 대해 책을 얻기 위해 두 개의 별도 DomainContext 인스턴스를 사용한다고 가정합니다. 결과적으로 동일한 Book 객체의 두 인스턴스가 생성됩니다. 더 많은 코드를 게시 할 수 있습니까? –

+0

AFAIK 속성 중 하나가 기본 키와 같은 키인 경우. EntityFramework가 관리합니다. edmx 파일 및 domainService 클래스의 속성에서 주요 등록 정보를 확인할 수 있습니까? –

+0

@ DavutGürbüz 그것은 엔티티가 아닙니다. 서적 개체는 서드 파티 API를 기반으로 서버 측에서 생성됩니다. Name 속성에 [Key] 속성을 추가하려고했습니다. 자동 생성 된 프로필 클래스의 결과는 더 이상 books 속성을 갖지 않습니다. – jenspo

답변

0

해결 방법 GetProfile의 콜백 메소드는 모든 profile.books를 트래버스하고 각 사전이 이미 로컬 사전에 있는지 확인하는 메소드로 대체됩니다. 책이 국지로 존재하면 국지 서적이 사용되고 두 번째 인스턴스는 삭제됩니다. 그렇지 않으면 책이 사전에 추가되어 사용됩니다.

나는 내 자신의 Book-class 클라이언트 사이트를 만든 다음 RIA에서 만든 bookss를 내 자신의 book-type으로 변환합니다. 업데이트 된 서적을 다시 서버로 보내면 RIA Books의 인스턴스를 만들고 FavouriteBook과 같은 속성을 업데이트하기 전에 OnDeserializing() 및 OnDesriallized()를 호출합니다. 그래서 RIA-Book을 편집 할 수 있습니다.