MVC 5中带有EF 6的错误“ System.InvalidOperationException:IEntityChangeTracker的多个实例无法引用一个实体对象。”

心理编码器

这是我将产品添加到数据库中的代码:

public void AddToCart(Product item)
{
    // Get the matching cart and album instances
    var cartItem = entities.Orders.FirstOrDefault(
        c => c.OrderGUID == ShoppingCartId
        && c.OrderItems.Where(p=>p.ProductId == item.ProductId).FirstOrDefault().ProductId == item.ProductId);

    if (cartItem == null)
    {
        // Create a new cart item if no cart item exists
        cartItem = new Order
        {
            InvoiceNumber = Guid.NewGuid().ToString(),
            OrderDate=DateTime.Now,
            OrderGUID = ShoppingCartId
        };
        entities.Orders.Add(cartItem);
    }
    else
    {
        // If the item does exist in the cart, 
        // then add one to the quantity
        cartItem.OrderItems.Where(p => p.ProductId == item.ProductId).SingleOrDefault().ProductQuantity++;
    }
    // Save changes
    entities.SaveChanges();

    OrderItem oi = new OrderItem()
    {
        OrderGUID = ShoppingCartId,
        ProductId = item.ProductId,
        ProductQuantity = item.Quantity,
        ProductPrice = item.ProductPrice,
        Product = item
    };

    entities.OrderItems.Add(oi);
    entities.SaveChanges();
}

当它碰到这条线

entities.OrderItems.Add(oi);

如果当我得到上述错误。有任何想法吗?

马丁·诺雷克

乍一看,我会怀疑此代码中的实体变量与参数“产品项”来自哪个实体变量不是同一实体框架。当引用一个项目时,它必须由相同的实体框架数据模型加载。

您可以尝试通过ID进行引用:

OrderItem oi = new OrderItem()
{
    OrderGUID = ShoppingCartId,
    ProductId = item.ProductId,
    ProductQuantity = item.Quantity,
    ProductPrice = item.ProductPrice,
    ProductID = item.ID // Changed here
};

entities.OrderItems.Add(oi);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档