C#Observer模式EntityState

时间:2018-03-21 10:48:22

标签: c# observer-pattern

从一开始就好。我有一个MVC EF应用程序(一个网站)。人们可以在该网站上下订单。当所有订单都在当天完成时,一个人(购物者)打开前端应用程序(通过反应制作),并通过API调用所有订购的产品。到现在为止还挺好。我在名为&#34的前端应用程序中创建了一个按钮;不可用"。当购物者点击它时,它激活MVC应用程序中的方法,向发出订单的用户发送邮件以将产品更改为另一个。到现在为止还挺好。 用户单击邮件中的链接,转到网站并将特定产品更改为新产品。 现在这个新产品必须在前端应用程序中更新,所以我想要做的是点击按钮,长时间轮询到api url并等待服务器(网站)响应新产品。

我有html表单(用户更改产品的表单),当用户点击提交时,会在数据库中修改一些记录。

这是de code(在OrderController中找到):

    [HttpPost]
    public ActionResult ChangeOrder(int orderId, int productId)
    {
        //get huidige order
        var order = _db.Orders.Where(o => o.OrderId == orderId).SingleOrDefault();
        //get prijs van het nieuwe product
        var productPrice = _db.Products.Where(p => p.ProductId == productId).SingleOrDefault();
        //pas prijs aan in de order
        order.UnitPrice = productPrice.Details.PriceLabelNow;
        //pas product id aan in de order
        order.ProductId = productId;
        order.Date = DateTime.Now;
        //update de database
        _db.setOrderModified(order);
        _db.SaveChanges();

        return View("OrderChanged");
    }

这就是setOrderModified的样子(在我的Context类中找到):

    public void setOrderModified (object entity)
    {
        Entry(entity).State = EntityState.Modified;
    }

现在我想使用观察者模式监视ChangeOrder,以便在提交表单时将其发送给另一个方法。

我在考虑将setORderMoified作为主题,但我不知道该怎么做。

由于评论建议使用eventhandler,我添加了在提交表单时必须引发的代码。

这是前端用于获取新产品的api调用。

 // GET /api/orders/one/{device_id}/{id}/{date}
    [HttpGet]
    [ActionName("one")]
    public OrdersAPI GetOrder(string device_id, int id, string date)
    {

        //fire this when the form is submitted.
         var result = repository.GetUpdated(device_id, id, date);
        return result;

    }

任何可以帮助我或者有更好主意的人?

0 个答案:

没有答案