过去几天我一直在努力解决这个问题,似乎无法解决这个问题。我正在使用Code First方法与MVC 4和EF 5.我通过流畅的API建立了多对多关系。以下是示例代码:
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 Code First方法。我真的很茫然...
谢谢。
答案 0 :(得分:1)
试试这个:
var classesTeachers = from c in data.Classes
where c.Teachers.Any(t => t.Id == mockUser.Id)
select c;