使用Linq到实体插入现有行的副本

时间:2013-12-02 07:16:32

标签: c# linq entity-framework linq-to-entities

我正在使用实体框架。我有一个表,其中包含自动生成的主键以及与其他主数据表的很多关键关系。我们需要一个复制功能,其中我们可以从表中选择任何现有行,并将其作为副本插入同一个表中。

我需要复制所有字段,但它应该是不同的记录,并且需要相同的过程/ LINQ。

请建议,我该怎么办。

1 个答案:

答案 0 :(得分:2)

你可以这样做:

context.Entry(oCustomer).State = EntityState.Added;

这将导致EF认为此实体是新实体,在您致电SaveChanges后,它将插入在数据库中而不是已更新。< / p>

如果您有对象图 - 您需要遍历它并确保所有子实体都设置为EntityState.Unchanged,否则它们将在SaveChanges之后重复。