在过去的几天里,我一直在为此苦苦挣扎,似乎无法弄清楚。我在 MVC 4 和 EF 5 中使用 Code First 方法。我通过 fluent 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 方法。我真的很茫然...
谢谢你。