多对多关系 - 检索两端

时间:2012-09-27 16:51:45

标签: c# linq entity-framework linq-to-entities

我在Code First Entity Framework中设置了以下实体:

 public class User
 {
    public int UserId { get; set; }
    public virtual ICollection<Task> Tasks { get; set; }
 }

 public class Task 
 {
     public int TaskId { get; set; }
     public virtual ICollection<User> Users { get; set; }
 }

如何为给定用户编写查询,返回分配给该用户的所有任务,这些任务包括分配给该任务的所有用户。

例如:

我被分配了两项任务。这两项任务分配给我和另一位用户。

当我检索我的用户时,我希望Tasks集合包括我分配给的任务,当我查看其中一个任务时,它应该有一个对我的用户和另一个用户的引用。

我不想使用延迟加载。

我尝试过类似的事情:

 db.Users.Include(t => t.Tasks.Include(u => u.Users)).SingleOrDefault(u => u.UserId == 1)

但它无效

1 个答案:

答案 0 :(得分:0)

只需将第Include替换为Select

db.Users.Include(t => t.Tasks.Select(u => u.Users))
    .SingleOrDefault(u => u.UserId == 1);