에서 SQL Server 데이터베이스에 대한 병렬 호출 자체가 채워지는 단순한보기 모델이 있지만 웹 페이지에 많은 선택 목록이 포함되어 있으며 모든 목록에 대해 데이터를 가져 오기 위해 데이터베이스 프로 시저를 호출하고 있습니다. 명부.뷰 모델
데이터베이스 호출을 비동기식으로 또는 병렬로 실행할 수 있습니까? 당신이 볼 수 있듯이, _list3이 _list2을 기다리고 및 _list2가 _list1을 기다리고,이 요청을 많이 느려질 수
// controller
public ActionResult Index()
{
model = new SampleViewModel();
model.Populate(database);
return View(model);
}
// view model
public class SampleViewModel
{
public SampleViewModel(DbContext db)
{
_list1 = context.Db.SqlQuery<SelectList1>("SELECT Id, Value FROM dbo.Table1").ToList();
_list2 = context.Db.SqlQuery<SelectList2>("SELECT Id, Value FROM dbo.Table2").ToList();
_list3 = context.Db.SqlQuery<SelectList3>("SELECT Id, Value FROM dbo.Table3").ToList();
_list4 = context.Db.SqlQuery<SelectList4>("SELECT Id, Value FROM dbo.Table4").ToList();
_list5 = context.Db.SqlQuery<SelectList5>("SELECT Id, Value FROM dbo.Table5").ToList();
}
private readonly List<SelectList1> _list1;
public int SelectedList1Id { get; set; }
public IEnumerable<SelectListItem> List1 { get { return new SelectList(_list1, "Id", "Value");} }
-//- _list2
-//- _list3
-//- _list4
-//- _list5
}
:
나는 이러한 종류의 코드를 가지고있다. 뷰 모델이 채워지는 이유는 실제 시나리오에서 이러한 선택 목록이 서로 관련되어 있고 모델에 선택된 ID에 대한 정보가 포함되어 있고 모델 확인에 실패한 경우 선택 목록을 다시 작성할 수 있기 때문입니다.
아이디어가 있으십니까? 일부 비동기 대기 접근법을 사용할 수 있습니까?이 경우 SQL Server 2008에 대한 도움이 될까요?
(psst, 모델보기 컨트롤러입니다.이 모델은 "보기 모델"이 아닙니다.) – Will