1

我正在使用最新版本的 EF 并试图弄清楚如何制作对象的副本并将其作为新记录插入,但是这样指向不同对象的对象的所有属性仍然指向这些对象之后副本。

所以我说了一个“软件”对象,它有一个版本并且有作者和公司属性,我复制了这个软件并更新了版本,作者和公司保持不变,但我有一个新的记录。所以从技术上讲,如果需要,我可以回滚到以前的版本。

当前获取对象,对其进行更新并将其作为新对象插入会创建预期的链接对象的新版本。我知道您可以将对象附加和分离到上下文中,这似乎是正确的方法,但不确定当您想要新记录时它是如何工作的。

谢谢

4

1 回答 1

4

当您更新对象时,在调用 SaveChanges() 之前,您可以将 EntityState 修改为已添加,因此 EF 会将实体添加为新实体,而不是更新现有实体。

如果你有一个 DbContext:

YourContext.Entry(YourEntity).State = EntityState.Added;

如果你有一个 ObjectContext:

YourContext.ObjectStateManager.ChangeObjectState(YourEntity, EntityState.Added);
于 2012-09-13T15:50:07.813 回答