List <Object> 직렬화가 여러 개체에서 작동하지 않습니다.

RobVious

다음과 같은 수업이 있습니다

[DataContract]
public class Video
{
    [Key]
    [DataMember(IsRequired = false)]
    public int VideoId { get; set; }

    [DataMember(IsRequired = false)]
    public int UserId { get; set; }

    [Required]
    [DataMember ]
    public string Title { get; set; }

    [Required]
    [DataMember]
    public virtual IList<Tag> Tags { get; set; }

}

[DataContract]
public class Tag
{
    [Key]
    [Required]
    [DataMember(IsRequired = false)]
    public int? TagId { get; set; }

    [DataMember(IsRequired = true)]
    [Required]
    public string Name { get; set; }

    [IgnoreDataMember]
    public virtual IList<Video> Videos { get; set; }

}

내 WebAPI 컨트롤러에서 다음을 호출합니다.

            var videos = _service.GetVideos();
            return Request.CreateResponse(HttpStatusCode.OK, videos);

이것을 부르는 :

    public IList<Video> GetVideos()
    {
        using (var db = CreateContext())
        {
            return db.Videos.Include("Tags").ToList();
        }
    }

그러나 와이어를 통해 이것은 내가 얻는 것입니다.

 [{
    "$id": "8",
    "tags": [
        {
            // CORRECT SERIALIZATION
            "$id": "9",  
            "tagId": 1,
            "name": "Example",
            "count": 5
        }
    ],
    "videoId": 18,
    "userId": 3,
    "title": "Test Video",
    "thumbnail": "http://i.imgur.com/gV3J2Uf.png",
    "source": "test source"
},
 {
    "$id": "19",
    "tags": [
        {
            // WTF?
            "$ref": "9"
        }
    ],
    "videoId": 28,
    "userId": 6,
    "title": "Test Video",
    "thumbnail": "http://i.imgur.com/gV3J2Uf.png",
    "source": "test source"
},
{
    "$id": "20",
    "tags": [
        {
            // CORRECT AGAIN
            "$id": "21",
            "tagId": 10,
            "name": "funny",
            "count": 2
        }
    ],
    "videoId": 29,
    "userId": 6,
    "title": "TEST VID",
    "thumbnail": "https://i.imgur.com/SWOQSOf.jpg",
    "source": "test source"
},
{
    "$id": "22",
    "tags": [
        {
            // INCORRECT
            "$ref": "9"
        },
        {
            "$ref": "21"
        }
    ],
    "videoId": 30,
    "userId": 6,
    "title": "TEST VID",
    "thumbnail": "https://i.imgur.com/R7lVobX.jpg",
    "source": "test source"
}

어떤 이유로- tags때로는 올바르게 직렬화되고 때로는 그렇지 않습니다. 내가 뭘 잘못하고 있는지 아십니까?

다린 디미트로프

개체 그래프에 순환 참조가 있습니다. JSON을 올바르게 직렬화 할 수 없으며 직렬화 기는이 조건을 감지하고 자동으로 참조 ( $ref)를 만듭니다 . EF를 사용하여 개체 그래프를로드 할 때 JSON에서 올바르게 표현할 수없는 메모리의 개체간에 순환 참조가 있습니다.

뷰 모델을 사용하여 원형 참조 그래프를 끊은 다음 자동 생성 된 EF 모델을 직접 반환하는 대신 와이어를 통해 뷰 모델을 보내는 것이 좋습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JSON에서 여러 개체 역 직렬화가 작동하지 않음

분류에서Dev

DrawElements가 여러 개체에서 예상대로 작동하지 않습니다.

분류에서Dev

java.lang.Object에 대해 Gson 사용자 정의 직렬화가 작동하지 않습니다.

분류에서Dev

Object.defineProperty가 창 개체 IE11에서 작동하지 않습니다.

분류에서Dev

여러 개체 직렬화 오류 : 개체가 인스턴스로 설정되지 않았습니다.

분류에서Dev

여러 쿼리에서 SqlCommand가 작동하지 않습니다.

분류에서Dev

mongo 2.6.4에서 여러 $ near가 작동하지 않습니다.

분류에서Dev

JQuery 직렬화가 동적 요소에서 작동하지 않습니다.

분류에서Dev

json 파일을 c # list <object>로 역 직렬화하지만 속성이 개체에 들어오지 않습니다.

분류에서Dev

여러 개의 notLike가 작동하지 않습니다.

분류에서Dev

.htaccess 여러 매개 변수가 작동하지 않습니다.

분류에서Dev

Jackson Object Mapper를 사용하여 Json에 대한 Java 객체가 작동하지 않습니다.

분류에서Dev

array [index] .object가 ReactJS에서 작동하지 않습니다.

분류에서Dev

request.getparameter가 여러 서블릿에서 작동하지 않습니다.

분류에서Dev

CardView Recycler가 내 List <SomeModel>에서 작동하지 않습니다.

분류에서Dev

ViewState 저장소에 대해 직렬화 가능한 클래스 개체가 C # ASP.net에서 작동하지 않습니다.

분류에서Dev

여러 삽입 패널 열기가 matplotlib에서 작동하지 않습니다.

분류에서Dev

readlink -f가 여러 파일에서 작동하지 않습니다.

분류에서Dev

readlink -f가 여러 파일에서 작동하지 않습니다.

분류에서Dev

rails 4.1.6 form_for coffeescript가 여러 뷰에서 작동하지 않습니다.

분류에서Dev

SimplePie에서 여러 피드가 제대로 작동하지 않습니다.

분류에서Dev

여러 ChartJS 스크립트가 동시에 작동하지 않습니다.

분류에서Dev

AngularJS 필터가 개체에서 작동하지 않습니다.

분류에서Dev

NSPredicate가 일부 개체에서 작동하지 않습니다.

분류에서Dev

C # JSON-동일한 속성을 가진 서로 다른 유형의 여러 개체 직렬화

분류에서Dev

Apollo 서버는 하위 개체에서 Mongoose의 가상 속성을 직렬화하지 않습니다.

분류에서Dev

여러 번 클릭하면 jQuery가 여러 드롭 다운에서 작동하지 않습니다.

분류에서Dev

직렬화 가능 인터페이스를 구현했지만 클래스 객체는 여전히 직렬화 가능하지 않습니다.

분류에서Dev

자식 개체 및 형제 개체에서 개체 이름이 동일한 XML Serializer를 사용하여 개체를 직렬화 할 수 없습니다.

Related 관련 기사

  1. 1

    JSON에서 여러 개체 역 직렬화가 작동하지 않음

  2. 2

    DrawElements가 여러 개체에서 예상대로 작동하지 않습니다.

  3. 3

    java.lang.Object에 대해 Gson 사용자 정의 직렬화가 작동하지 않습니다.

  4. 4

    Object.defineProperty가 창 개체 IE11에서 작동하지 않습니다.

  5. 5

    여러 개체 직렬화 오류 : 개체가 인스턴스로 설정되지 않았습니다.

  6. 6

    여러 쿼리에서 SqlCommand가 작동하지 않습니다.

  7. 7

    mongo 2.6.4에서 여러 $ near가 작동하지 않습니다.

  8. 8

    JQuery 직렬화가 동적 요소에서 작동하지 않습니다.

  9. 9

    json 파일을 c # list <object>로 역 직렬화하지만 속성이 개체에 들어오지 않습니다.

  10. 10

    여러 개의 notLike가 작동하지 않습니다.

  11. 11

    .htaccess 여러 매개 변수가 작동하지 않습니다.

  12. 12

    Jackson Object Mapper를 사용하여 Json에 대한 Java 객체가 작동하지 않습니다.

  13. 13

    array [index] .object가 ReactJS에서 작동하지 않습니다.

  14. 14

    request.getparameter가 여러 서블릿에서 작동하지 않습니다.

  15. 15

    CardView Recycler가 내 List <SomeModel>에서 작동하지 않습니다.

  16. 16

    ViewState 저장소에 대해 직렬화 가능한 클래스 개체가 C # ASP.net에서 작동하지 않습니다.

  17. 17

    여러 삽입 패널 열기가 matplotlib에서 작동하지 않습니다.

  18. 18

    readlink -f가 여러 파일에서 작동하지 않습니다.

  19. 19

    readlink -f가 여러 파일에서 작동하지 않습니다.

  20. 20

    rails 4.1.6 form_for coffeescript가 여러 뷰에서 작동하지 않습니다.

  21. 21

    SimplePie에서 여러 피드가 제대로 작동하지 않습니다.

  22. 22

    여러 ChartJS 스크립트가 동시에 작동하지 않습니다.

  23. 23

    AngularJS 필터가 개체에서 작동하지 않습니다.

  24. 24

    NSPredicate가 일부 개체에서 작동하지 않습니다.

  25. 25

    C # JSON-동일한 속성을 가진 서로 다른 유형의 여러 개체 직렬화

  26. 26

    Apollo 서버는 하위 개체에서 Mongoose의 가상 속성을 직렬화하지 않습니다.

  27. 27

    여러 번 클릭하면 jQuery가 여러 드롭 다운에서 작동하지 않습니다.

  28. 28

    직렬화 가능 인터페이스를 구현했지만 클래스 객체는 여전히 직렬화 가능하지 않습니다.

  29. 29

    자식 개체 및 형제 개체에서 개체 이름이 동일한 XML Serializer를 사용하여 개체를 직렬화 할 수 없습니다.

뜨겁다태그

보관