忽略SaveChanges上的引用对象()

时间:2014-12-29 15:38:04

标签: c# entity-framework

我有一个可以生成多个订单的应用程序。在第一次运行时,这非常有效,但是当我创建第二个订单并尝试将其保存到数据库时,我得到一个错误,即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();
}

1 个答案:

答案 0 :(得分:0)

我现在通过清除我的上下文缓存来解决它。我认为这个问题是由于我使用的是长期存在的上下文,因此某些对象没有正确处理。

public void ClearEntityCache(){
    _context.Dispose();
    _context = new EntityContext();
}