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