自分が何をしているのかはっきりとわかりません。この MVC のものは、パターンを維持しようとしている私の心を本当に吹き飛ばしています。私はMVCのチュートリアルとメガグーグルをフォローしてきましたが、これは私が自分自身を描いたコーナーです。
ビューにアクセスしようとしている類似のデータが複数あります。コードを動作させることはできますが、db への複数の呼び出しが原因で db から大きなレコードセットをプルし始めると、非常に非効率になるように見えます。だから、私は OrderSummary クラスを持っています。クラス内にはこれがあります:
public IEnumerable<Order> GetOrders()
{
var orders = (from s in db.Orders
where s.UserId == uId
select s);
return orders.ToList();
}
次に、これ:
public decimal GetGrossProfitTotal()
{
var orders = (from s in db.Orders
where s.UserId == uId
select s);
decimal? grossprofittotal = orders.Sum(s => s.Profit);
return grossprofittotal ?? decimal.Zero;
}
したがって、コードの最後のチャンクを取り、それを totalcommission と netprofittotal にコピーすると、基本的にはこのようにレイアウトされます。私はデータベースへの4つの呼び出しを推測しますか?
次に、コントローラーで:
var ordersummary = new OrdersSummary();
var viewModel = new OrderSummary
{
Orders = ordersummary.GetOrders(),
GrossProfitTotal = ordersummary.GetGrossProfitTotal(),
CommissionTotal = ordersummary.GetCommissionTotal(),
NetProfitTotal = ordersummary.GetNetProfitTotal(),
};
return View(viewModel);
これにより、必要なすべてのデータがビューに表示されるので、それを操作できます。私には、それは不必要に冗長に思えるだけで、効率が悪いと思いますか? 並べ替えと検索のパラメーターも実行していることを考慮すると、linq コードも重複しています。次のようにデータを統合するために何かできるはずです:
var orders = (from s in db.Orders
where s.UserId == uId
select s).ToList();
decimal grossprofittotal = orders.Sum(s => s.Profit);
decimal commissiontotal = orders.Sum(s => s.Commission);
decimal netprofittotal = orders.Sum(s => s.Profit + s.Commission);
次に、これら 4 つのデータ (注文リストと 3 つの 10 進数値) を配列 (またはその他のもの) に適切にまとめて、コントローラー/ビューに送信します。ビューでは、注文リストをループできる必要があります。私はここから離れていますか?または、ここでの MVC の標準的な手順は何ですか? ありがとう。