我有一个可以生成多个订单的应用程序。在第一次运行时,这非常有效,但是当我创建第二个订单并尝试将其保存到数据库时,我得到一个错误,即ObjectStateManager中已存在具有相同密钥的对象。
我怀疑这不是因为新创建的订单对象,而是因为持有的引用。但即便如此,鉴于merge-option是AppendOnly,在SaveChanges()调用中应忽略这些附加对象。
生成订单对象的代码如下:
public void GenerateOrder(){
Order order = new Order();
order.Items.Add(item1);
order.Items.Add(item2);
}
public void AddOrder(Order order){
_context.Orders.Add(order);
_context.SaveChanges();
}
答案 0 :(得分:0)
我现在通过清除我的上下文缓存来解决它。我认为这个问题是由于我使用的是长期存在的上下文,因此某些对象没有正确处理。
public void ClearEntityCache(){
_context.Dispose();
_context = new EntityContext();
}