应该削减这个mvc行动

时间:2013-06-17 08:53:29

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-controller

我刚刚进入mvc 4(和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 btw

1 个答案:

答案 0 :(得分:1)

我建议您创建一个“存储库”来隐藏Controller操作中的详细信息。 “Upsert”方法可以清晰,优雅地实现隐藏控制器的细节。