2009-12-01 34 views
1

在遺留系統中,我照顧必須將相同的記錄添加到表中兩次。無法用LINQ將記錄兩次添加到SQL中

表中有一個隨每個新記錄遞增的標識。

如果我做了以下我得到的錯誤: 「不能添加已經存在的實體」

有沒有辦法添加一條記錄的兩倍,而無需創建另一個PricingSnapshot對象?

  PricingSnapshot pricingSnapshot = new PricingSnapshot 
      { 
       InvoiceOrderLineId = invoiceOrderLineId, 
       GrossPaymentValue = grossTotal, 
       CreatedBy = "Pricing Engine", 
       CreatedDate = DateTime.Now 
      }; 
      dBpostChanges.PricingSnapshots.InsertOnSubmit(pricingSnapshot); 
      dBpostChanges.SubmitChanges(); 

     dBpostChanges.PricingSnapshots.InsertOnSubmit(pricingSnapshot); 
      dBpostChanges.SubmitChanges(); 
+0

我想你表中的一列是唯一的。你能顯示你的表格模式嗎? – user213225 2009-12-01 17:01:54

回答

2

您必須創建一個新的PricingSnapshot對象,因爲在第一次提交更改後,您的對象pricingSnapshot仍然存在,並且現在已從您的表中分配了一個ID。所以如果你在第一次提交後嘗試訪問對象的ID,你會發現它有一個,因此再次將它添加到表中,將會添加一個副本。

3

創建另一個定價快照對象是「正確」的方式來做到這一點。 Linq到SQL的設計方式就是這樣,所以做任何其他事情都會逆流而上。