2012-02-24 2 views
1

asp.net 응용 프로그램에서 WCF 서비스를 호출하고 있습니다.DataContract IsReference는 저장 작업을 수행하지만 가져 오기 작업을 중단합니다.

저장 내 작업이 실패하고 난 속성 설정해야 말했다 오류 얻고 있었다 :

[DataContract(IsReference = true)] 

지금 작업이 작동하지만, 내 GET 작업 (컬렉션을 반환) 저장의 나하는 컬렉션을 반환하지만, 속성은 모두 0으로 설정됩니다.

내가있는 경우 :

[Serializable] 

가져 오기 작업이 작동하지만, 저장이 실패 :

System.Runtime.Serialization exception "contains cycles and cannot be serialized if reference tracking is disabled." 

가 어떻게이 문제를 해결받을 수 있나요? 분명히 두 속성을 가질 수는 없습니다.

+2

게시물을 일련 번호 문제가 발생한 데이터 계약 정의로 업데이트하십시오. "includes cycles ..."오류를 다시 만드는 데 필요한 데이터 계약 및 속성의 최소 개수를 게시하십시오. 직렬화되고있는 객체 계층 구조를 보면이 문제의 원인을 밝힐 수 있습니다. – sillv0r

답변

1

코드 조각을 기반으로 이해할 수있는 한 순환 참조 문제 일 수 있습니다. 주위를 읽은 나는 당신이 전에 자신의 DataContractSerializer (예를 들어,이 post Sowmy Srinivasan에 의해 참조) 구현해야했다 시간 전에 깨달았다. NET 3.5 SP1의 모든 것을

은 훨씬 간단합니다 : 다음과 같이 단지의를 DataContract 속성에 IsReference 매개 변수를 사용해야합니다 : 어떤 이유

[DataContract(Namespace = "http://schemas.acme.it/2009/10", IsReference=true)] 
public class Node 
{ 
    // everything same as in the example above. 
} 

당신이 IsReference 속성에 설정이라면, 당신 DataContract의 DataMember에서 IsRequired 특성을 true로 설정할 수 없습니다. 그 이유는 어떻게 든 here으로 설명됩니다.

희망 사항이 문제를 해결할 수 있습니다. ;-)

관련 문제