programing

엔티티에 대한 이상한 LINQ 예외

lovejava 2023. 10. 6. 20:47

엔티티에 대한 이상한 LINQ 예외

저는 Post / Post Comment 스타일 레코드를 작성하기 위해 필요한 다양한 테이블 정보를 선택하는 LINQ 문을 사용하고 있습니다.레코드 세트를 반복하려고 하면 객체가 I 컨버터블을 구현해야 한다는 재미있는 예외가 발생합니다.재미있는 부분은 제가 데이터를 보유하기 위해 사용하고 있는 익명 타입이 2개 이상의 일반 컬렉션을 포함하고 있을 때만 발생하는 것 같습니다.

//select friend timeline posts posts
var pquery = from friend in fquery
    join post in db.game_timeline on friend.id equals post.user_id
    //join user in db.users on post.friend_id equals user.id into userGroup
    //join game in db.games on post.game_id equals game.game_id into gameGroup
    select new
    {
        Friend = friend,
        Post = post,

        Game = from game in db.games
          where game.game_id == post.game_id
          select game,

        Recipient = from user in db.users
          where user.id == post.user_id
          select user,

        Comments = from comment in db.timeline_comments
          where comment.post_id == post.id
          join users in db.users on comment.user_id equals users.id
          select new { User = users, Comment = comment }
    };

(참고: 저는 MYSQL Connector/Net을 사용하고 있으므로 Take 및 FirstOrDefault와 같은 것들은 LINQ 문 자체에서 지원되지 않지만, 예외가 발생하지 않기 때문에 반복하는 동안 이러한 메서드를 사용하도록 선택했습니다.)

문제는 3가지 필드(게임, 수신자, 댓글)가 모두 있을 때입니다."Object must employment I convertible" 예외가 발생합니다.그러나 세 가지 필드 과제 중 하나만 제거하면(어느 것이든 상관 없음), 잘 작동합니다.이게 무슨 일인지 아는 사람?

미리 감사드립니다!

라이언.

이는 추측이지만, 두 개 이상의 쿼리가 있을 때 익명 유형이 열거형으로 오리 입력을 시도하는 일 수 있습니다.그런 경우 enum이 Iconvertible을 구현하고 익명 유형(현재 enum에서 파생됨)이 인터페이스를 구현하지 않기 때문에 Iconvertible을 구현하지 않는 것에 대한 불만이 제기됩니다.

언급URL : https://stackoverflow.com/questions/5903506/strange-linq-to-entities-exception