2012-01-11 16 views
0

ビューに渡すビューモデルを作成していて、ビューモデルが同じオブジェクトのいくつかの プロパティで構成されている場合、LINQクエリはどのように作成する必要がありますか?現時点では私はこのようにそれをやっている:複数のLINQクエリを持つMVC3 ViewModelは複数のDB呼び出しを行っていますか?

TaskEditViewModel viewModel = new TaskEditViewModel 
{ 
     Task = taskRepository.Tasks.FirstOrDefault(t => t.Id == id), 
     Status = (taskRepository.Tasks.FirstOrDefault(t => t.Id == id).CompletionDate.ToString() == "") ? "close" : "open", 
     Account = taskRepository.Tasks.FirstOrDefault(t => t.Id == id).Accounts.First() 
}; 
return View(viewModel); 

私taskRepositoryはのIQueryableを返すので、これは私が3別々のDBで通話を発信しています意味ですか?私は1つの呼び出しを行い、結果からビューモデルを構築する必要がありますか?

+1

私は、何が正しいのか、これらが複数の呼び出し(あなたのリポジトリの構築方法にもよると思います)を伝えるのに十分な知識はありません。しかし、私は 'CompletionDate'と' Accounts'があなたの 'Task'モデルに含まれていると思うでしょう(LinqToSqlでは常にそうではありませんか?)ので、明示的に設定するのではなくviewModelのプロパティとして公開できます。 –

答えて

0

私はこれを記念日に再考することにしました。私はこのが遅延ロードのために複数のdbコールを行っていると思います。それほど効率的ではありません。

インゴヴァルスが正しくコメントとして、CompletionDateAccountプロパティは私のタスクモデルに含まれているので、私はちょうどこのような何か行っている必要があります。そして、私の見解で、私はCompletionDateAccountを得ることができます

Task viewModel = taskRepository.Tasks.FirstOrDefault(t => t.Id == id) 

return View(viewModel); 

をビューモデルのプロパティ

関連する問題