この質問は、私の他の質問のパート B です。
データベースに複数の呼び出しを行う非効率的な MVC ViewModel?
データベースへの複数の呼び出しが悪い考えであることはわかっていました。しかし、私の本当の質問は、コードの最後のチャンクまたは speti43 の例を使用して、モデル コンストラクターで次のように言って、複数の db 呼び出しを排除することだと思います。
Public Class OrdersSummary{
...
Public ???? GetOrders(){
var ordersInMemory = orders.ToList();
decimal? GrossProfitTotal = ordersInMemory.Sum(s => s.Profit);
decimal? CommissionTotal = ordersInMemory.Sum(s => s.Commission);
decimal? NetProfitTotal = GrossProfitTotal + CommissionTotal;
return ?????
}
}
これらの個別の類似したデータをコントローラーに渡すにはどうすればよいですか? ここにある他のSO記事の推奨事項に基づいて、このようなタプルを使用しようとしていました:
public Tuple<IEnumerable<dynamic>, decimal?, decimal?, decimal?> GetOrders(string sortOrder, string searchString)
{
...
return new Tuple<IEnumerable<dynamic>,decimal?,decimal?,decimal?> (ordersInMemory, GrossProfitTotal, CommissionTotal, NetProfitTotal);
}
これは合理的に聞こえますか?次に、コントローラーでタプルを参照する方法がわかりません。
var ordersummary = new OrdersSummary();
var viewModel = new OrderSummary
{
???? cause I have no idea how to reference the tuple
};
return View(viewModel);
もう 1 つの問題は、ビュー モデルで正しいプロパティを構築しているかどうか完全に確信が持てないことです。現在、4 つのデータと Orders リストの個々のプロパティについては、次のようにしています。
public class OrderSummary
{
public IEnumerable<dynamic> Orders { get; set; }
public decimal GrossProfitTotal { get; set; }
public decimal CommissionTotal { get; set; }
public decimal NetProfitTotal { get; set; }
//Orders Table Properties
public int OrderNumber { get; set; }
public DateTime OpenTime { get; set; }
//more properties here that correspond to the Orders table.
}
ビューモデルで異なるタプルプロパティを構築する必要があるようです? もしそうなら、どの構文ですか?
コントローラーに何が入るかを知っていれば、ビューに何が入るかがわかると思います。これは正しい方法ですか?MVCMUsicStore チュートリアルのステップ 8 から、この全体のビュー モデル構造のアイデアを得ました。
http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-8