0

が、私は以下のような子エンティティのコレクションを持っている要求と呼ばれるエンティティを持って言う:私はタスクと質問のコレクションの両方を含むオブジェクトを取得したいのですが、私はinclude()を使用してこれを行うことが複数の変換済みコレクションをEFで選択できますか?

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

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

が、私ドンそれらのコレクションのすべてのフィールドが必要です。

私はそれぞれのTaskQuestionエンティティから名前と日付フィールドを取得することに興味があります。

これを行う方法を知っている唯一の方法は、複数のクエリでselect()を呼び出して、それぞれの変換されたコレクションを取得することです。

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

+0

ご要望がありますか? –

答えて

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が必要とされていないかなり確信している:ような何かを行うことができるはずです。

+0

Erikありがとうございます。私はそれを複雑にしていた:) –

0

私は、これはあなたが探しているまさにではないと確信しているが、これが唯一のデータベースへの1往復であるべきであり、あなたは正しい方向に始める必要があります。

entitycontext.Requests.Select(t => new { 
    TaskName = t.Questions.First().Name, 
    QuestionName = t.Tasks.First().Name 
}); 
関連する問題