C# 这个mvc动作应该被削减吗

C# 这个mvc动作应该被削减吗,c#,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-controller,C#,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc Controller,我刚刚进入MVC4(以及一般的mvc),我只是想知道这个动作代码是可以的,还是应该再次精简 [HttpPost] public ActionResult Index(DashboardViewModel dbModel) { //retrieve latest resident order var residentOrder = db.ResidentOrders.GetById(dbModel.ResidentOr

我刚刚进入MVC4(以及一般的mvc),我只是想知道这个动作代码是可以的,还是应该再次精简

[HttpPost]
        public ActionResult Index(DashboardViewModel dbModel)
        {
            //retrieve latest resident order
            var residentOrder = db.ResidentOrders.GetById(dbModel.ResidentOrderID);

            if (residentOrder == null)
            {
                var order = db.Orders.GetById(dbModel.OrderID);

                var user = db.Users.GetUserByUsername(User.Identity.Name);

                residentOrder = new ResidentOrder()
                {
                    CreatedDate=DateTime.Now,
                    LastUpdateDate = DateTime.Now,
                    Litres=0,
                    Customer = user
                };

                order.ResidentOrders.Add(residentOrder);

                db.Commit();
            }

            //check to see if value has changed
            if (!dbModel.ResidentLitresOrdered.Equals(residentOrder.Litres))
            {
                //get new ordered value
                residentOrder.Litres = dbModel.ResidentLitresOrdered;

                db.Commit();

                //send an email just to notify in writing of the change.
                SendOwnOrderQtyUpdateNotification();
            }

            return View(dbModel);
        }
基本上,如果一个常驻订单不存在,那么我们就创建一个,这是系统中唯一需要这样做的地方

我是否仍应该将代码剥离到我的存储库中


db是我的IUnitOfWork顺便说一句,我建议您创建一个“存储库”来隐藏控制器操作的详细信息。
一个“Upsert”方法将允许清楚而优雅地实现这一点,从而对控制器隐藏细节。

好的,我将把它去掉。是upsert的方式,还是我应该有单独的插入更新功能?