我有2张桌子; PriceList和PriceListDetail具有一对多的实时性。插入新的PriceList后,我需要复制现有PriceList的PriceListDetail。
var pricedetails= db.PriceListDetails.Where(p => p.PriceList Id == SomeExistingPriceListID);
我需要的是更改上面pricedetails的priceListID并将它们插入PriceListDetail表。当我修改pricedetails的priceListId并尝试插入它们时,我得到“无法插入已经存在的实体”。
明显的解决方案是从pricedetails中逐个创建新实体并复制值,然后插入。
有没有办法避免逐个复制?也许创建重复的行然后修改重复的行?
答案 0 :(得分:1)
实体框架使用的是除主键之外的其他键,它被称为entity key
。
因此,拥有PriceListDetails,您所要做的就是更改主键ID并将实体键设置为NULL(NULL表示新行)。