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