在ASP.net MVC中向DbContext添加和保存记录时出现DbUpdateException

时间:2013-01-31 02:21:41

标签: asp.net-mvc entity-framework dbcontext

我正在尝试将Cart记录添加到我的类ProjectConext中,该类是DbConext类型。问题是,当我添加记录并尝试保存它时,我得到的错误是CustomerID字段不能为空(它不能),即使我可以看到我插入一个非空值为了它。这是我的模型代码:

    public class ShoppingCart
{
    ProjectContext _db = new ProjectContext();

    public void AddToCart(Video toAdd, Customer CurUser)
    {
        var CartItem = new Cart
        {
            CustomerID = CurUser.CustomerID,
            Item = toAdd.Title,
            Count = 1,
            Price = 1.00
        };
        _db.Carts.Add(CartItem);
        _db.SaveChanges();
    }
}

我在Add()之后的行中插入了一个断点,我可以看到CartItem已经填充了所有字段,而_db.Carts应该是MVCProject.Model.Cart。如果有人知道为什么没有正确添加记录,那么您的帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:1)

我找到了答案,问题是因为CustomerID是Cart表中的标识列,所以它试图自动插入一个擦除现有的值。添加代码:DatabaseGenerated(DatabaseGeneratedOption.None)

,如

    public class Cart
{
    [Key, Required, DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int CustomerID { get; set; }
    public string Item { get; set; }
    public int Count { get; set; }
    public double Price { get; set; }
}

解决了这个问题。