2011-07-02 1 views
1

일부 순환 참조가있는 레거시 데이터베이스를 사용하고 있습니다. SL4 클라이언트에서 내 Ria 서비스를 사용할 때. (ORM 매퍼를 통해 생성 된 엔티티) 다음 오류가 발생합니다.WCF Ria 서비스 및 순환 참조

http://tempuri.org/:GetPublicationPagesResult 매개 변수를 직렬화하는 동안 오류가 발생했습니다. InnerException 메시지가 ''xxx.Entities.TblPublicationPage '유형의 개체 그래프에 사이클이 포함되어 있으며 참조 추적을 사용할 수없는 경우 직렬화 할 수 없습니다.

[Query] 
public IQueryable<TblPublicationPage> GetPublicationPages(int publicationId) 
{ 
    return this.PublicationLogic.Value.GetPublicationPages(publicationId); 
} 

CyclicReferencesAware 특성 또는 IsRefence = true를 통해 일반 WCF를 사용하도록 설정하는 방법을 알고 있습니다. 그러나 WCF Ria Services에서이 작업을 수행하는 방법을 알 수 없습니다.

지금 WCF 리아 서비스가 더 나은, 난 그냥 일반 WCF에서 할 것 같은 그것을 해결하기 위해 노력하고 내 생성 된 개체에 metadataclass을 추가 이해
+0

당신이 ORM 성장 가정을 사용하고 있습니까? –

+0

Telerik의 OpenAccess가 없습니다. ADO.net 서비스로 노출되면 순환 문제는 없지만 SL의 경우 WCF RIA를 선호합니다. – krikke999

답변

0

: 내가 가지고있는이다이 시점에서

[DataContract(IsReference = true)] 
[DataServiceKey("PublicationPageID")] 
[DebuggerDisplay("PublicationPageID: {PublicationPageID}")] 
[MetadataType(typeof(TblPublicationPageMetadata))] 
public partial class TblPublicationPage 
{ 
    internal sealed class TblPublicationPageMetadata 
    { 
     [DataMember] 
     public int PublicationPageID { get; set; } 
    } 
} 

만 단점 ... A [DataMember를] 속성 메타 데이터 클래스에서

0

사용 [CyclicReferencesAware을 (사실)] 모든 속성을 장식하는