我显然不知道我在做什么。这个 MVC 东西真的让我在试图保持这种模式时大吃一惊。我一直在关注 MVC 教程以及大型谷歌搜索,这是我自己画的一个角落。
我有多个类似的数据要查看。我能够让我的代码正常工作,但对我来说,由于对数据库的多次调用,我们开始从数据库中提取大型记录集,因此它看起来效率非常低。所以,我有一个 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;
}
所以,如果我们把最后一段代码复制到总佣金和净利润总额中,这基本上就是我的布局。我猜想对数据库有四个调用?
然后在控制器中:
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);
然后将这四个数据(订单列表和三个十进制值)很好地包装在一个数组(或其他)中,并将它们发送到控制器/视图。在视图中,我需要能够遍历订单列表。我离这儿很远吗?或者,MVC 的标准程序是什么?谢谢。