2013-09-16 2 views
1

엔티티 프레임 워크의 많은 관계로 많은 (제거 모든 관련이없는 속성) :나는이 같은 많은 관계로 많은 설정

public class Makes 
{ 
    [Key] 
    public int MakeId { get; set; } 

    public ICollection<KeyWords> KeyWords {get; set;} 
} 

public class KeyWords 
{ 
    public KeyWords() 
    { 
     Makes = new HashSet<Makes>(); 
    } 

    [Key] 
    public int KeyWordsId { get; set;} 
    public string KeyWord { get; set;} 
} 

그리고 상황에 맞는 정의 :

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<KeyWords>().HasMany(w => w.Makes).WithMany(kw => kw.KeyWords).Map(
      m => 
      { 
       m.MapLeftKey("KeyWords_KeyWordsID"); 
       m.MapRightKey("Makes_MakesID"); 
       m.ToTable("MakesKeyWords"); 
      }); 

     base.OnModelCreating(modelBuilder); 
    } 

데이터베이스 시드를 단계별로 살펴 보았습니다. 엔티티가 올바르게 작성된 후 일부 키워드를 작성한 후 작성한 키워드를 추가 할 때 엔티티가 올바르게 작성된 것처럼 보입니다. 시계를 사용하여 두 항목 사이를 탐색 할 수 있습니다.

데이터베이스 초기화가 완료되면 데이터베이스를보고 모든 데이터가있는 것처럼 보입니다.

아무런 변화가 없습니다
@if (Model != null) 
{ 
    Foreach(models.Makes item in model.Makes) 
    { 
     if (item.KeyWords.Count > 0) 
       { 
        <div class="KeyWords"> 
        @foreach (Models.KeyWords kw in item.KeyWords) 
        { 
         <span class="KeyWord">@kw.KeyWord</span> 
        } 
        </div> 
       } 
    } 
} 

, 키워드는 차종과 연관되지 않는 : 나는 실제로보기에서 키워드를 표시 한 경우에는, 내가 알고있는 차종은 내가 공의 수를 가지고 키워드를 할당 더 이상.

무엇이 누락 되었습니까?

감사합니다.

답변

1

어느 것은 ...로드 게으른 수 있도록 virtual로 탐색 속성을 표시

public virtual ICollection<KeyWords> KeyWords {get; set;} 

... 또는 차종 (열망 로딩)로드 할 때 Include를 사용

var makes = context.Makes.Include(m => m.KeyWords).ToList(); 

(람다 버전 Include의 코드 파일에는 using System.Data.Entity;이 필요합니다.)

+0

사실상 그렇게했습니다. 나는 그것이 단순한 무엇인가 알고 있었다. .. – Snowburnt

관련 문제