2010-02-22 3 views
1

이전에이 순환 참조 문제에 대해 쓴 적이 있지만 솔루션을 게시 한 적이 없습니다.엔터티 데이터 모델 엔터티를 JSON 데이터로 반환

나는이 오류에 대해 말하고 있습니다. " 'DocInvoice.Models.Clients'유형의 개체를 직렬화하는 동안 순환 참조가 감지되었습니다."

누구나 Json.NET 라이브러리를 사용하여 JSON에 직렬화를 시도 했습니까?

엔티티 쿼리에 Linq가있는 경우 코드 엔티티 속성을 직접 입력하고 탐색 속성을 제외하는 유일한 방법은 무엇입니까? 그것들은 문제를 만드는 사람들이기 때문에.

Linq "new"문에 수십 (또는 그 이상) 엔티티 속성을 입력해야하기 때문에 성가시다. (두 번째 예를

select new { client.client_id, 
      client.client_firstname, 
      ....., ... , 
      postcode.postcode 
      }; ... 

답변

2

익명의 유형에 투사 : 나는 모든 속성을 원하는 경우 예를 들어, 나는이 작업을 수행 할 수 있지만 순환 참조 오류가 발생합니다 :

var clients = from client in edmx.Clients 
    from postcode in edmx.PostCodes 
    where (client.client_firstname.StartsWith(q) || 
        client.client_lastname.StartsWith(q)) && 
        postcode.postcode == client.PostCodes.postcode 
    select new {client, postcode}; 

유일한 다른 옵션은) 올바른 방법입니다. 나중에 추가 속성이 엔터티에 추가되면 코드가 정보를 유출하지 못하도록하는 유일한 방법입니다. 익명 형식은 코드가 반환하는 것을 명확하게 제한합니다.

+0

좋은 설명과 설명, 감사합니다. – mare

관련 문제