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()、複数のクエリを呼び出して、変換された各コレクションを取得することです。

DBへの1回の旅行でこれを行う方法はありますか?

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

これはあなたが探しているものではないと確信していますが、これはデータベースへの1回のラウンドトリップであり、正しい方向に進むことができるはずです。

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