0

假设我有一个名为 Request 的实体,它具有如下子实体的集合:

public class Request
{
    public int RequestID { get; set; }

    //Navigation Properties
    public ICollection<Task> Tasks { get; set; }
    public ICollection<Question> Questions { get; set; }
}

我想检索一个包含 Tasks 和 Questions 集合的对象,我可以这样做,include()但我不需要这些集合中的所有字段。

假设我只对从每个实体中检索名称Task和日期字段感兴趣。Question

我知道如何做到这一点的唯一方法是调用select()多个查询来检索每个转换后的集合。

有没有办法在一次访问数据库中做到这一点?

4

2 回答 2

2

您应该能够执行以下操作:

var requests = context.Request
                      .Select(r => new 
                              {
                                id = R.RequestID,
                                tasks = R.Tasks
                                         .Select(t => new
                                                      {
                                                        Name = t.Name,
                                                        Date = t.Date
                                                      });                  
                                questions = R.Questions
                                             .Select(q => new
                                                          {
                                                            Name = q.Name,
                                                            Date = q.Date
                                                          });                  
                              });

我很确定Include不需要,因为查询本身已经加入以返回加入的项目。

于 2012-05-09T16:43:55.717 回答
0

我确定这不是您正在寻找的内容,但这应该只是到数据库的一次往返,并且应该让您朝着正确的方向开始:

entitycontext.Requests.Select(t => new {
   TaskName = t.Questions.First().Name,
   QuestionName = t.Tasks.First().Name
});
于 2012-05-09T16:42:05.530 回答