문제

LINQ에서 SQL 클래스 세트가 있으며 .NET JavaScriptTerializer를 사용하여 JSON으로 직렬화했습니다.

그러나 관련 테이블에 레코드를 추가하자마자 직렬화는 "원형 참조 예외"를 던집니다. aaarggh!

자세히 설명되어 있습니다 여기.

몇 가지 옵션이 있습니다

  • LINQ를 SQL 클래스로 전환하여 관계가없는 클래스로 변환하여 원형 참조를 피하십시오.
  • Nulling Associations에 의한 원형 참조를 저격하십시오 - 나는 이것이 실제 선택이라고 생각하지 않습니다.
  • scriptignoreattribute를 사용하십시오 (어떻게 든). 속성이 생성 된 클래스에 있고 LINQ에서 SQL에서 SQL이 자동으로 버디 클래스를 존중하지 않기 때문에 쉽게 적용 할 수 없습니다.
  • json.net을 사용하고 어떻게 든 속성 + 버디 클래스를 사용하여 관계를 통과하려는 시리얼 라이저를 중지하십시오.

다른 사람이 이것을 만났습니까? 가능한 경우 마지막 옵션을 선호하지만이 작업을 수행하는 방법을 모르겠습니다.

모든 도움은 대단히 감사합니다

도움이 되었습니까?

해결책

JSON.NET의 최신 버전은 원형 관계 직렬화를 지원합니다. 체크 아웃 객체 참조 보존 도움으로.

다른 팁

허용 답변에 대한 추가 링크

json.net 도움말, 객체 참조 보존 (예시)

LINQ에서 SQL에서 잘 작동하는 것 같습니다

제임스의 해결책은 내 문제의 일부를 해결했습니다. 객체 내에서 특정 목록 유형을 제외해야했습니다. 내 문제를 해결하기 위해 필요한 개체의 일부를 복사했습니다. 다음은 예입니다.

var DB = new DBDataContext();
            var lUsers = new List<User>();
            DB.Users.ToList().ForEach(x => lUsers.Add(new User()
                {
                    ID = x.ID,
                    FIRST_NAME = x.FIRST_NAME
                }) );
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top