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

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

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

请建议,我该怎么办。

你可以这样做:

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

这将导致EF认为此实体是新实体,在您调用SaveChanges ,它将被插入数据库中而不会更新

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