2012-08-30 2 views
0

저는 지난 며칠 동안이 문제로 어려움을 겪었습니다. MVC 4와 EF 5에서 코드 첫 번째 접근 방식을 사용하고 있습니다. 유창한 API를 통해 다 대 다 관계 설정을했습니다.코드 MVC 4 EF 5 many-to-many Join

public class Class 
    { 
     public Class() 
     { 
      Teachers = new List<User>(); 
     } 
     /// <summary> 
     /// Unique ID in the system 
     /// </summary> 
     [Key] 
     public long Id { get; set; } 

     /// <summary> 
     /// Array of users (Teachers and Interventionists) associated with that class 
     /// </summary> 
     public List<User> Teachers { get; set; } 
    } 

사용자 클래스 :

public class User 
{ 
    public User() 
    { 

    } 
    /// <summary> 
    ///  Unique Id in the system 
    ///</summary> 
    [Key] 
    public long Id { get; set; } 

    public List<Class> Classes { get; set; } 
} 

유창 API가 여기에 있습니다 : 다음 샘플 코드는

modelBuilder.Entity<Class>().HasMany(m => m.Teachers).WithMany(t => t.Classes).Map(m => 
      { 
       m.ToTable("ClassTeachers"); 
       m.MapLeftKey("ClassId"); 
       m.MapRightKey("UserId"); 
      }); 

것은 무슨 일이야 :

EF의는 ClassTeachers을 생성됩니다 테이블을 선택하고 모든 클래스를 선택하면 예상대로 데이터가 수신됩니다. 수업에는 반환 된 데이터 내에서 올바른 교사가 있습니다. 나는 특정 교사가 모든 클래스를 반환하기 위해 노력하고있어

:와

나는 도움이 필요 무엇. 나는 이와 같은 것을 시도했다 :

var classesTeachers = 
     from classes in data.Classes from u in data.Users 
     where u.Id == mockUser.Id 
     select new { classes.Id, classes.Label, u.FirstName }; 

그러나 나는 정확한 데이터를 얻지 못하고있다. 일반적으로 필요한 결과를 얻기 위해 중간에 참여할 수있는 세 번째 테이블이 있지만 EF 코드 우선 접근 방식에서는 사용할 수 없습니다. 정말 실망입니다 ...

고마워요.

답변

1

이 시도 : 너무 많이 감사했다

var classesTeachers = from c in data.Classes 
         where c.Teachers.Any(t => t.Id == mockUser.Id) 
         select c; 
+0

을! – user1038280