C# 带EF 6的MVC 5中出现错误;System.InvalidOperationException:一个实体对象不能被IEntityChangeTracker的多个实例引用。”;

C# 带EF 6的MVC 5中出现错误;System.InvalidOperationException:一个实体对象不能被IEntityChangeTracker的多个实例引用。”;,c#,asp.net-mvc-5,entity-framework-6,C#,Asp.net Mvc 5,Entity Framework 6,这是我用于将产品添加到数据库的代码: 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.P

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

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);

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

乍一看,我怀疑代码中的实体变量和参数“Product item”的来源不是同一个实体框架。引用项时,它必须由同一实体框架数据模型加载

您可以尝试改为按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);

谢谢你的帮助@MartinNoreke