2013-07-08 2 views
0

PriceGridRow를 열렬히로드하려고하면 PriceGridColumn의 인덱스 및 값 속성이 채워지지만 Id 및 ProduceGridRowId는 채워지지 않습니다. 명시 적으로 PriceGridColumns를 포함 시키려고하면 중복 열 (즉, 열 10 개가 있지만 EF에 의해 반환 된 객체는 20 개)이 반환되는 열의 절반이 완전히 채워지고 나머지 절반은 그렇지 않습니다.Entity Framework로 Eager를로드 할 때 누락 된 정보

왜 이런 일이 발생하는지 파악하려고하는 내 머리카락을 남기고 있습니다. 아무도 내 구성에 따라 왜 이런 식으로 행동하는지 알 수 있습니까? 감사!

내가 열을 얻기 위해 사용하는 코드는 다음과 같습니다 여기

public override PriceGrid GetLoadedById(object id) 
{ 
    var priceGrid = Entities 
     Include(x => x.PriceGridRows.Select(o => o.PriceGridColumns)) 
     .FirstOrDefault(x => x.Id == (int) id); 


    return priceGrid; 
} 

마침내

public class PriceGrid : DomainEntity<int> 
{ 
    public string Description { get; set; } 
    public Product Product { get; set; } 
    public int ProductId { get; set; } 

    public List<PriceGridRow> PriceGridRows 
    { 
     get { return _priceGridRow; } 
     set { _priceGridRow = value; } 
    } 
} 
public class PriceGridRow : DomainEntity<int> 
{ 
    public PriceGrid PriceGrid { get; set; } 
    public int PriceGridId { get; set; } 

    public ProductOption ProductOption { get; set; } 
    public int ProductOptionId { get; set; } 
    public List<PriceGridColumn> PriceGridColumns { get; set; } 

} 

문제의 클래스 그리고 여기

public class PriceGridColumn : DomainEntity<int> 
{ 
    public PriceGridRow PriceGridRow { get; set; } 
    public int PriceGridRowId { get; set; } 

    public int Index { get; set; } 
    public decimal Value { get; set; } 
} 

가 중첩의 세 번째 수준입니다 내 파일 매핑

public class PriceGridMap : EntityTypeConfiguration<PriceGrid> 
{ 
    public PriceGridMap() 
    { 
     HasKey(x => x.Id); 

     Property(x => x.Description); 
     HasRequired(x => x.Product); 

     HasMany(x => x.PriceGridRows) 
      .WithRequired(x => x.PriceGrid) 
      .HasForeignKey(x => x.PriceGridId) 
      .WillCascadeOnDelete(); 
    } 
} 
public class PriceGridRowMap : EntityTypeConfiguration<PriceGridRow> 
{ 
    public PriceGridRowMap() 
    { 
     HasKey(x => x.Id); 
     HasRequired(x => x.ProductOption); 
     HasMany(x => x.PriceGridColumns) 
      .WithRequired(x => x.PriceGridRow) 
      .HasForeignKey(x => x.PriceGridRowId) 
     .WillCascadeOnDelete(); 
    } 
} 
public class PriceGridColumnMap : EntityTypeConfiguration<PriceGridColumn> 
{ 
    public PriceGridColumnMap() 
    { 
     HasKey(x => x.Id); 
     Property(x => x.Index); 
     Property(x => x.Value); 
     HasRequired(x => x.PriceGridRow); 
    } 
} 
+0

다음 번에 질문 태그를 선택하십시오. 나는 그들을 지금 편집했다. 그들은 답변을 얻을 수있는 기회를 향상시키는 것이 중요합니다. – Slauma

답변

0

봅니다 PriceGridColumnMap에서이 매핑 라인을 제거합니다 : 기본적으로 관계가 PriceGridRow 탐색 속성이 역 탐색 속성이 없습니다 속해 있다는 것을 의미

HasRequired(x => x.PriceGridRow); 

합니다. 그것은 바로 가기입니다 :

HasRequired(x => x.PriceGridRow) 
    .WithMany()... 

하지만이 PriceGridRowMap에 매핑과 모순에 다음 PriceGridRow 탐색 속성 역 탐색 속성, 즉 PriceGridColumns을 않는 것을 말한다

HasMany(x => x.PriceGridColumns) 
    .WithRequired(x => x.PriceGridRow)... 

.

+0

감사합니다. 가서 보고서를 보내 드리겠습니다. – Kelly

+0

와우 최신 업데이트가 문제를 해결했다고 말하고 싶습니다. – Kelly