Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Linq到Sql中的现有实体创建和插入新实体_C#_Asp.net_Linq_Linq To Sql - Fatal编程技术网

C# 从Linq到Sql中的现有实体创建和插入新实体

C# 从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

我有两张桌子;PriceList和PriceListDetail具有一对多realitoship。插入新的价格表后,我需要复制现有价格表的PriceListDetail

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@卡普兰希望此链接有助于: