使用EF核心复制具有关系的多个表数据

时间:2019-02-27 10:35:13

标签: ef-core-2.2

我有七个表,其中包含数百行相关数据。这些表格建立了相当复杂的报价工具,增加了材料和成本等。

是否可以使用EF Core和几行代码加载所有这些实体,然后将它们写回为新实体,但在生成新ID的过程中并正确地将所有彼此关联起来,所以我最终得到了完整复制所有数据。然后,我可以在Header表上更改CompanyID,瞧,一家公司拥有模板的完整副本,他们现在可以自行配置。

我将要编写一个程序,一个接一个地加载实体,循环遍历,一个接一个地保存行,等等,存储id,等等。我很高兴编写该过程,因为看不到自动的方法。

1 个答案:

答案 0 :(得分:0)

我想到的唯一方法就是使用EF Core。由于它不支持篡改主键,因此,如果您不想创建过程,可以尝试执行类似的操作,但是我可以看到一种对主键执行级联更新的方法。这种代码将允许您根据需要使用自定义ID更改主键。您仍然需要循环。所以,是的,您首先更新主表,然后在其下更新依赖于该主表的表。

foreach(var row in your_entity){
  your_context.your_new_entity.AddObject(row);
  your_context.SaveChanges();
  row.Id = your_id;
  for(var row2 in your_depending_entity){
    row2.foreignkey = your_id
    .... // and so on 
  }
}