在Linq To Sql中从Existing One创建和插入新实体

时间:2012-07-16 06:45:06

标签: c# asp.net linq linq-to-sql

我有2张桌子; PriceList和PriceListDetail具有一对多的实时性。插入新的PriceList后,我需要复制现有PriceList的PriceListDetail。

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

我需要的是更改上面pricedetails的priceListID并将它们插入PriceListDetail表。当我修改pricedetails的priceListId并尝试插入它们时,我得到“无法插入已经存在的实体”。

明显的解决方案是从pricedetails中逐个创建新实体并复制值,然后插入。

有没有办法避免逐个复制?也许创建重复的行然后修改重复的行?

1 个答案:

答案 0 :(得分:1)

实体框架使用的是除主键之外的其他键,它被称为entity key。 因此,拥有PriceListDetails,您所要做的就是更改主键ID并将实体键设置为NULL(NULL表示新行)。