2017-02-14 1 views
0

나는 ParentChild 클래스/테이블이 있으며 Fluent API를 사용하여 매핑을 구성하고 있습니다. 테이블은 각 테이블의 기본 키가 아닌 필드에서 조인됩니다. 따라서 읽은 항목에 따라 Entity Framework에서 조인을 구성 할 수 없습니다. 그렇기 때문에 직접 Parent.Children 속성을로드 할 것입니다. (parent.Children = (from x in context.Children...)매핑되지 않은 하위 엔터티가있는 오류

그러나 Parent의 매핑에 대한 예외가 발생합니다. 내가 context.Parents를 조회 할 때 내 수업은 내가 엔티티 프레임 워크가 생성하는 SQL은 ChildParent에 가입하려고하고 Child_ParentPrimaryKey라는 Child의 속성을 찾고 있기 때문에 예외가,

public class Parent 
{ 
    // Unique primary key 
    public int ParentPrimaryKey { get; set; } 

    // These two fields together compose the foreign key to join to Child 
    public string ParentForeignKey1 { get; set; } 
    public string ParentForeignKey2 { get; set; } 

    public List<Child> Children { get; set; } 
} 

public class Child 
{ 
    // Unique primary key 
    public int ChildPrimaryKey { get; set; } 

    // These two fields together compose the (non-unique) foreign key to join to Parent 
    public string ChildForeignKey1 { get; set; } 
    public string ChildForeignKey2 { get; set; } 

} 

처럼 보인다.

내가 modelBuilder.Entity<Parent>().Ignore(p => p.Children);을 추가하면 나는 오류를받지 않고 System.NotSupportedException: The specified type member 'Packages' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

가 어떻게 Parent에 매핑되지 않은 속성으로 Children을 유지할 수있는 예외거야?

+0

이 경우 '무시'가 작동해야합니다. 나는 매핑이 괜찮으며 오류가 쿼리에 있다고 생각합니다. 'NotSupportedException'는 쿼리에서 매핑되지 않은 컬렉션 탐색 속성 인'Packages'를 사용하고있는 것처럼 보이며 지원되지 않습니다. 사용중인 전체 쿼리를 표시 할 수 있습니까? –

+0

고맙습니다. @ V. 레온! 이 문제는 나를 미치게 만들었고 귀하의 의견은 문제를 지적했습니다. 내 쿼리에'Children' 탐색 속성을 사용하고있었습니다. 나는 그것을 제거하고, 지금 일하고있다. –

답변

1

당신은 [NotMapped] 속성을 추가하여 EF 매핑에서 속성을 제외 할 수 있습니다 응답 모든 사람에게

using System.ComponentModel.DataAnnotations.Schema; 
public class Parent { 
    // ... 

    [NotMapped] 
    public List<Child> Children { get; set; } 
} 

DataAnnotations - NotMapped Attribute

+0

'무시'가 동일한 작업을 수행하지 않아도됩니까? 내 모델을 자체 프로젝트로 분리하려고하고 있는데 Entity Framework에 종속되지 않습니다. –

+0

실제로 '무시'해야합니다. 오류를 생성하는 실제 코드를 표시 했습니까? 당신이 얻고있는 오류 메시지가 회원이 "패키지"에 대해 말하고 있기 때문에 지원되지 않습니다. 'Packages' 나 다른 커스텀 C#에서 EF가 매핑을 막을 수있는 특별한 getter가 있습니까? –

+0

죄송합니다. 실제 코드의'Packages' 속성은이 코드의'Children' 속성에 해당합니다. 실제 코드에서'Packages'는'public list'입니다. Packages {get; 세트; }'이고'Order'는 여기'Parent'에 해당합니다. –

0

감사합니다. 내 LINQ 쿼리에서 Parent.Children 속성을 사용하고 있다는 문제가 있다는 것을 알게되었습니다. 나는 그것을 제거하고, 지금 일하고있다.

관련 문제