2014-12-29 29 views
0

我有一個可以生成多個訂單的應用程序。在第一次運行時,這工作得很好,但是當我創建第二個命令並嘗試將其保存到數據庫時,我得到一個錯誤,即具有相同鍵的對象已經存在於ObjectStateManager中。忽略SaveChanges上的引用對象()

我懷疑這不是因爲新創建的訂單對象,而是因爲持有的參考。但即便如此,假定合併選項爲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

您可以請發佈一些您的代碼?如果沒有看到自己的代碼,診斷程序中出了什麼問題有點困難 – IronMan84

+0

僅應使用數據庫中已有的對象進行附加操作,否則應該添加它們。 – Shoe

+1

與論壇網站不同,我們不使用「謝謝」或「任何幫助表示讚賞」,或在[so]上簽名。請參閱「[應該'嗨','謝謝',標語和致敬從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be –

回答

0

我有點解決它現在通過清除我的上下文的緩存。我認爲這個問題是由於我使用長壽的上下文,因此某些對象沒有正確處理而引起的。

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