엔티티 프레임 워크에서 자체 참조와 관련하여 응용 프로그램의로드를 결정하기 위해 질문이 있습니다.엔티티 프레임 워크 - 자체 참조
불행히도 나는 테이블에 관계가 있습니다. 이 때문에 일부 자체 참조 개체가 있습니다. 예를 들어 : -> 고객 -> 입력 -> 회사 - 회사는
(회사 ... 고객이 일부 항목에 이러한 항목이 다른 고객을 포함하는 회사에 매핑되는 속한 일부 고객이있다> 고객 ....)
json 문자열에서 이것을 직렬화 할 때 자체 참조 루프에 관한 오류 메시지가 표시됩니다 (명확함) 엔티티 프레임 워크에서이 쿼리를 작성하면 오류 메시지. 그러나 디버거를 살펴보면 "루프"를 볼 수 있습니다.
내 질문 : 내 서버에 높은 성능의 부하가 발생합니까? 또는이 다른 처리됩니다, 그래서 C#에서이 자체 참조를 무시할 수 있습니다?
그렇지 않으면 나는
난 그냥 내가 테이블에 더 많은 항목을했습니다 때 서버 부하에 대한 문제를 방지하려면 ... 나는 테이블의 관계에 대한 변경을해야 생각합니다.미리 감사드립니다.
로드 중 하나를 계속 활성화하려면 참조가 직렬화 중에 다른 방식으로 처리 될 수 있습니다 (Json.NET을 사용하는 다른 질문의 예 : http://stackoverflow.com/a/). 8711702/1234773) – Jodacola
주요 문제는 엔티티 프레임 워크가 어떻게 작동 하는지를 이해하는 것입니다. 나는 내 C# 코드에서 끝없는 반복을 가질 것이라고 생각했다. 하지만 지금은 그것이 어떻게 작동하는지 보이는 것입니다. 그것은 primaray와 외래 키로 연결된 엔티티가 두 개 밖에없는 경우에도 발생합니다. 첫 번째 객체의 프로퍼티를 열어 다른 객체를 열 수 있으며이 현재 객체에서 첫 번째 객체 속성을 열 수 있습니다. 그래서 나는 그것이 끝없는 반복 일 것이라고 생각했으나 그렇게 보이지는 않습니다 ... – AJRames
EF는 탐색 속성을 기본적으로로드하지 않습니다. 처음 액세스 할 때 (Lazy Loading) 또는'.Include' (Eager Loading)에 지정할 때로드 할 것입니다. 그래서 당신이이 글을 쓸 때'var item = Context.Set() .Find (1); var customer = item.Customer;'EF는 데이터베이스에 두 개의 쿼리를 수행합니다. '.Find()'를 호출하면 첫 번째로드 전용 회사 필드 (탐색 속성없이)가 표시되고'.Customer' 속성에 액세스 할 때 두 번째 쿼리가 수행되고 고객 필드도 탐색 속성없이로드됩니다. –
YuriyP