2012-07-16 39 views
1

我有2個表; PriceList和PriceListDetail具有一對多的實現。插入新的PriceList後,我需要複製現有PriceList的PriceListDetail。從Linq中的現有人創建並插入新的實體到Sql

var pricedetails= db.PriceListDetails.Where(p => p.PriceList Id == SomeExistingPriceListID); 

我只需要更改pricedetails的priceListID並將它們插入到PriceListDetail表中。當我修改pricedetails的priceListId並嘗試插入它們時,我得到'無法插入已存在的實體'。

明顯的解決方案是創建新實體並從pricedetails中逐一複製值然後插入。

有沒有辦法避免一一複製?也許創建重複的行然後修改重複的行?

+0

@卡普蘭你試過我的答案? – Boomer 2012-07-16 07:21:42

回答

1

實體框架使用的不是主鍵而是另一個鍵,它被稱爲entity key。 因此,擁有您的PriceListDetails,您只需更改主鍵ID並將實體鍵設置爲NULL(NULL表示新行)即可。

+0

我正在使用linq-to-sql。我的類是由dbml生成的,它們不實現IEntityWithKey。 http://msdn.microsoft.com/en-us/library/dd283139%28v=vs.90%29.aspx – 2012-07-16 07:44:23

+1

@Kaplan希望這個鏈接幫助:http://social.msdn.microsoft.com/Forums/en -US/linqtosql /線程/ 94832076-c1af-4f46-a57c-522b1adef498 / – Boomer 2012-07-16 08:05:16

相關問題