C# 从Linq到Sql中的现有实体创建和插入新实体
我有两张桌子;PriceList和PriceListDetail具有一对多realitoship。插入新的价格表后,我需要复制现有价格表的PriceListDetailC# 从Linq到Sql中的现有实体创建和插入新实体,c#,asp.net,linq,linq-to-sql,C#,Asp.net,Linq,Linq To Sql,我有两张桌子;PriceList和PriceListDetail具有一对多realitoship。插入新的价格表后,我需要复制现有价格表的PriceListDetail var pricedetails= db.PriceListDetails.Where(p => p.PriceList Id == SomeExistingPriceListID); 我只需要更改上面pricedetails的priceListID,并将它们插入PriceListDetail表。当我修改pricedet
var pricedetails= db.PriceListDetails.Where(p => p.PriceList Id == SomeExistingPriceListID);
我只需要更改上面pricedetails的priceListID,并将它们插入PriceListDetail表。当我修改pricedetails的priceListId并尝试插入它们时,我得到“无法插入已经存在的实体”
显而易见的解决方案是创建新实体并从pricedetails中逐个复制值,然后插入
有没有办法避免一个接一个的复制?可能创建重复的行,然后修改重复的行?实体框架使用主键以外的另一个键,它被称为
实体键。
因此,有了PriceListDetails,您所要做的就是更改主键ID并将实体键设置为NULL(NULL表示新行)。实体框架使用主键以外的另一个键,它被称为实体键。
有了PriceListDetails,您只需更改主键ID并将实体键设置为NULL(NULL表示新行)。@Kaplan您尝试过我的答案吗?@Kaplan您尝试过我的答案吗?我正在使用linq to sql。我的类是由dbml生成的,它们没有实现IEntityWithKey@卡普兰希望这个链接有帮助:我正在使用LINQtoSQL。我的类是由dbml生成的,它们没有实现IEntityWithKey@卡普兰希望此链接有助于: