2010-04-02 1 views
0

빌드하고 싶은 웹 응용 프로그램의 서비스 계층을 다루는 것을 단순화 할 것이므로 RIA 서비스에 들어갔다. 어떤 종류의 관계형 데이터베이스 백업을 가지고있는 엔티티를 노출하고 소비하는 DomainService 클래스를 작성하는 방법을 보여주는 많은 예제가 있으므로 외래 키 관계가 있습니다. 그러나, 나는 일반적인 개체 그래프를 노출하고 소비하는 방법을 알고 싶습니다 ... 서로에 대한 참조를 포함하지만 외래 키가없는 개체.RIA 비 DB 객체 그래프 전송 서비스

예를 들어 "GetFolderInformation (string pathToFolder)"이라는 서비스 작업을 원한다고 가정하십시오. 이 RIA는 외래 키 관계가 실체를 처리하기를 원하는 것 때문에

- string Name 
- IEnumerable<FileInformation> Files 

나는이 작업을 얻을 수 없습니다 :이 함께 구성 "FolderInformation"라는 사용자 지정 개체를 반환합니다. 왜? 왜 serializer는 내 객체 참조를보고 상대방의 프록시에서 다시 만들 수 없습니까?

데이터는 외래 키 관계가 반드시 필요하지는 않은 서비스 계층 뒤에 있습니다 ... 예를 들어 폴더/파일과 같습니다.

편집 : 나는 내 질문을하지 않았다는 것을 깨달았습니다! 제 질문은, 제가하려고하는 것을 할 수있는 방법이 있습니까?

답변

0

이 복잡한 유형, 엔티티 연결과 관련없는 객체 그래프는 우리가 원하는 것이지만 v1에 대해서는 잘리지 않았습니다.

이것은 처리해야 할 seralization보다 훨씬 많기 때문에 이것은 시나리오의 가장 간단한 부분 일 것입니다. 변경 알림, 추적, 실행 취소 등을 지원하는 코드 유형 클라이언트 유형이 더 많이 포함됩니다.

해결 방법이 있습니다. 일반적으로 경계를 평평하게하고 평면화 된 데이터 세트에서 다른면에 그래프를 다시 작성합니다. 기술적으로 가능하더라도 앱 코드에서 반드시 간단하지는 않습니다.

+0

필자가 작성한 것보다 훨씬 복잡하다고 확신하지만, [Key] 애트리뷰트 대신 ObjectId와 같은 것을 사용하여 일반 오브젝트 그래프를 엔티티 그래프처럼 취급 할 수없는 이유는 무엇입니까? ] 속성이 정의되지 않았습니까? –

+0

세션 전반에 걸친 부분 오브젝트 그래프를 스티칭 할 수있는 열쇠가 있습니다. 오브젝트 참조를 사용하는 것처럼 (ObjectId의 의미라고 가정) 작동하지 않습니다. 두 번째 객체를 참조하는 첫 번째 객체가 필요합니다. 두 번째 객체에 대한 참조가 없어도 두 번째 객체의 키, 즉 외래 키가 무엇인지를 알고 있어야합니다. 그리고 그러한 생각은 두 번째 목표는 안정되고 독특한 열쇠를 필요로합니다. –

+0

나는 당신의 말을 거기에 가져갈 것입니다. 감사! –