更改为枚举未保存到数据库

时间:2014-06-03 15:24:41

标签: c# entity-framework asp.net-mvc-4 enums

我已在我的控制器上创建了一个操作,目的是在有人点击“下订单”按钮时更改订单状态。这是我的代码,它不会触发错误,并且在放置断点时,我可以看到Order.Status的设置是正确的。但是,EF似乎没有将枚举值的更改保存到数据库中。如果我更改strings / int等,它可以正常工作,但不能枚举。我究竟做错了什么?

   public ActionResult PlaceOrder(int id = 0)
    {
        Order order = db.Orders.Find(id);
        if (order == null)
        {
            return HttpNotFound();
        }


        order.Status = ServerApplication.Helpers.Enums.OrderStatus.Receive;

        db.Entry(order).State = EntityState.Modified;
        db.SaveChanges();

        return (RedirectToAction("Details", new { id = order.OrderId }));

    }

这就是Order的定义方式:

public class Order
{
    public int OrderId { get; set; }

    public ServerApplication.Helpers.Enums.OrderStatus Status { get; set; }

    ...
}

最后,枚举:

    public enum OrderStatus { Pending, Receive, Complete }

修改

我已经做了一些进一步的调查,而我之前的假设是,只是在编辑它时它没有改变是不正确的。在浏览数据库时,似乎没有枚举在数据库中有列。我的观点只是返回第一个值,让我觉得它们不正确时是正确的。我首先使用代码EF5,为什么使用我上面的模型是没有状态列?

1 个答案:

答案 0 :(得分:0)

问题是因为我在一个类中声明了枚举:

namespace ServerApplication.Helpers
{
    public static class Enums
    {
        public enum OrderStatus { Pending, Receive, Complete }
    }
}

删除该类并简单地解决以下问题:

namespace ServerApplication.Helpers
{
    public enum OrderStatus { Pending, Receive, Complete }
}