忽略 SaveChanges() 上的引用对象

本文关键字:引用 对象 SaveChanges 忽略 | 更新日期: 2023-09-27 18:35:31

>我有一个可以生成多个订单的应用程序。在第一次运行时,这工作得很好,但是当我创建第二个订单并尝试将其保存到数据库中时,我收到一个错误,指出 ObjectStateManager 中已经存在具有相同键的对象。

我怀疑这不是因为新创建的订单对象,而是因为持有的引用。但即便如此,鉴于合并选项是 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();
}

忽略 SaveChanges() 上的引用对象

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

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