2014-02-22 3 views
2

Entity Framework API 사용 많은 관계를 많은 관계로 매핑하는 다음 두 가지 방법을 계속 사용하고 있습니까? 나는 두 번째 옵션을 사용한 적이 없다 ... 차이점은 무엇인가?Entity Framework에서 Fluent API를 사용하여 Many To Many Relationship 만들기

옵션 1 :

modelBuilder.Entity<Student>() 
.HasMany(p => p.Lessons) 
.WithMany() 
.Map(m => 
{ 
    m.MapLeftKey("Id"); 
    m.MapRightKey("Id"); 
    m.ToTable("StudentAndLessons"); 
}); 

정확히 MapLeftKeyMapRightKey는 무엇입니까 : 2

modelBuilder.Entity<Student>() 
    .HasMany(p => p.Lessons) 
    .WithMany(); 

옵션? 언제 그것을 사용하고 어떤 이점이 있습니까?

답변

3

이 시나리오에서 .Map(...) 메소드를 사용하면 접합 테이블의 이름과 접합 테이블의 컬럼 이름을 정의 할 수 있습니다. MapLeftKey(string)Student의 키를 참조하는 접합 테이블의 FK 필드 이름을 설정합니다. 마찬가지로 MapRightKey(string)Lesson 테이블의 키를 참조하는 접합 테이블의 FK 필드 이름을 설정합니다. 다음과 같이 더 자세한 설명 사용법은 다음과 같습니다

modelBuilder.Entity<Student>() 
    .HasMany(p => p.Lessons) 
    .WithMany() 
    .Map(m => 
    { 
     m.MapLeftKey("StudentId"); 
     m.MapRightKey("LessonId"); 
     m.ToTable("StudentLesson"); 
    }); 

.Map 방법을 사용하지 않고, EF는 접합 테이블과 관련된 FK 컬럼의 이름을하는 방법을 결정합니다