형식이 'System.Linq.Expressions.FieldExpression'인 개체를 'System.Linq.Expressions.ParameterExpression'형식으로 캐스팅 할 수 없습니다.

entity-framework entity-framework-core linq

문제

ASP.NET5. 에서 Entity Framework rc1-final 하고 ASP.NET5.

나는 다음 표를 가지고있다.

public class PlayerComment 
{
    [Key]
    public int Id { get; set; }

    public int? PeriodId { get; set; }

    [ForeignKey("PeriodId")]
    public Period Period { get; set; }

    public int? PlayerId { get; set; }
    [ForeignKey("PlayerId")]
    public Player Player { get; set; 
    public DateTime? CommentDate { get; set; }

    public string Comment { get; set; }

}

PlayerCommentGroup 링크 된 SubGroup 링크 된 Player 에 링크되어 있습니다.

다음 LINQ 쿼리가 있습니다.

public class PlayerComment 
{
    [Key]
    public int Id { get; set; }

    public int? PeriodId { get; set; }

    [ForeignKey("PeriodId")]
    public Period Period { get; set; }

    public int? PlayerId { get; set; }
    [ForeignKey("PlayerId")]
    public Player Player { get; set; 
    public DateTime? CommentDate { get; set; }

    public string Comment { get; set; }

}

이것은 올바르게 작동합니다.

모든 의견은 기간에 포함되므로 내 출력에는 기간을 포함해야하므로 포함 .Include("Period")

그래서 내 코드는 이렇게 보입니다.

public class PlayerComment 
{
    [Key]
    public int Id { get; set; }

    public int? PeriodId { get; set; }

    [ForeignKey("PeriodId")]
    public Period Period { get; set; }

    public int? PlayerId { get; set; }
    [ForeignKey("PlayerId")]
    public Player Player { get; set; 
    public DateTime? CommentDate { get; set; }

    public string Comment { get; set; }

}

그러나 지금은 런타임 예외를 throw하고 나를 준다 :

"형식 'System.Linq.Expressions.FieldExpression'의 개체를 'System.Linq.Expressions.ParameterExpression'을 입력 할 수 없습니다."

나는 github 에서 OrderBy 에 오류가 있음을 알았지 만 주문을 사용하지는 않는다.

이 문제를 해결할 수있는 해결 방법이 있습니까?

@octavioccl에서 제공 한 답변 덕분에 좁혀진 것 같습니다.

내 코드를 다음으로 변경 :

public class PlayerComment 
{
    [Key]
    public int Id { get; set; }

    public int? PeriodId { get; set; }

    [ForeignKey("PeriodId")]
    public Period Period { get; set; }

    public int? PlayerId { get; set; }
    [ForeignKey("PlayerId")]
    public Player Player { get; set; 
    public DateTime? CommentDate { get; set; }

    public string Comment { get; set; }

}

GroupId 선택하고 다른 그룹을 null 유지하는 경우를 제외하고 모든 조합이 작동합니다. SubGroup 작동하기 때문에 Include를 사용하고 where 절 3 단계를 사용할 때만 문제가된다는 것을 추론 할 수 있습니다.

인기 답변

관련된 엔터티를로드 할 DbSet Include 메서드를 호출해야합니다.

 var table = (from pc in _db.PlayerComments.Include(p => p.Period)
              //...

명시 적 조인 대신 탐색 속성을 사용하면 쿼리가 더 간단해질 것이라고 생각합니다.

 var table = (from pc in _db.PlayerComments.Include(p => p.Period)
              //...

최신 정보

매개 변수가 쿼리 외부에서 null 인지 확인하는 조건을 이동하십시오.

 var table = (from pc in _db.PlayerComments.Include(p => p.Period)
              //...



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.