私は単純なビューモデルを持っていますが、それ自体が設定されていますが、ウェブページには多くの選択リストが含まれています。リスト。ビューモデルからの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に対して私は役に立ちますか?
(モデルビューコントローラー - 「ビューモデル」ではない、モデルです) – Will