0

在过去的几天里,我一直在为此苦苦挣扎,似乎无法弄清楚。我在 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 方法。我真的很茫然...

谢谢你。

4

1 回答 1

1

Try this:

var classesTeachers = from c in data.Classes
                      where c.Teachers.Any(t => t.Id == mockUser.Id)
                      select c;
于 2012-08-30T21:09:07.630 回答