EF Code First - Collection中的集合

时间:2012-11-13 16:03:13

标签: c# asp.net entity-framework code-first

我可能是个白痴,过去2个小时我一直在寻找答案,这个问题很可能就是我不确定如何用它来表达。

基本上我是新手代码并在此项目中使用它并且不确定如何查询它。

我有三个班级

个人资料>团队>事件

我需要获取特定用户可以访问的事件列表,用户必须是拥有该事件的团队的成员。

用户(个人资料)可以是许多团队的成员,我需要所有团队的事件列表。

我已经删除了我的课程,因为大部分内容与我目前的要求无关

  private void BindEvents()
    {
        var db = new Context();

        var events = db.Profiles
            .Include("Teams")
            .Include("Teams.Events")
            .Where(p => p.User_ID == user)
            .FirstOrDefault().Teams.Select(t => new { t.Events }.Events);

        gvUpcomingEvents.DataSource = events;
        gvUpcomingEvents.DataBind();

        db.Dispose();
    }

public class Profile
{
   [Key]
   public Guid User_ID { get; set; }
   [Required, MaxLength(10)]
   public string Title { get; set; }
   [Required, MaxLength(50)]
   public string Forename { get; set; }
   [Required, MaxLength(50)]
   public string Surname { get; set; }
   public ICollection<Team> Teams { get; set; }
   public Profile()
   {
       Teams = new HashSet<Team>();
   }
}


public class Team
{
    [Key]
    public int ID { get; set; }
    [Required, MaxLength(150)]
    public string Name { get; set; }
    [Required]
    public bool Active { get; set; }

    //Foreign Keys
    public ICollection<Profile> Users { get; set; }
    public ICollection<Event> Events { get; set; }

    public Team()
    {
        Users = new HashSet<Profile>();
    }
}

public class Event
{
   [Key]
   [Required]
   public int ID { get; set; }
   [Required]
   public Guid GUID { get; set; }
}

1 个答案:

答案 0 :(得分:1)

尝试SelectMany

var events = db.Profiles
         .Where(p => p.User_ID == user)
         .SelectMany(p=>p.Teams.SelectMany(t=>t.Events));