具有多个LINQ查询的MVC3 ViewModel,是否进行多个数据库调用?

时间:2012-01-11 12:01:14

标签: asp.net-mvc-3 linq-to-sql c#-4.0

如果我创建一个viewmodel来传递给一个视图,我的viewmodel由几个组成 来自同一对象的属性,我应该如何创建LINQ查询?目前我这样做:

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个单独的数据库调用?我应该进行一次调用,然后从结果中构建viewmodel吗?

1 个答案:

答案 0 :(得分:0)

我决定在其周年纪念日重温这一点。我认为由于延迟加载而进行多次db调用,因此效率不高。

正如Ingo Vals正确评论的那样,CompletionDateAccount属性包含在我的任务模型中,所以我应该做的就是这样:

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

return View(viewModel);

然后在我看来,我可以从视图模型中获取CompletionDateAccount属性