如果我将现有实体对象添加到DbContext会发生什么?

时间:2011-12-19 21:52:12

标签: .net entity-framework

在我的项目中,我使用以下代码将现有记录复制为新记录。

  // Copying existing purchase order
  Purchase newPurchase = this.currentPurchase
  // Add copy to DbContext
  this.boManager.Add(newPurchase);
  // Saveing changes and handle exceptions
  CommitChanges();

它似乎有效,但我观察到发生的事情似乎是它依赖于实体框架,当我添加现有记录时,我实际上想要添加一个具有基本相同数据的新数据,并且将为我,但它也可以弄清楚我添加了一个错误地添加现有记录,最好不要做任何事情,因为记录已经存在。

所以我的问题是:

  1. 我对实体内部工作的解释是否正确?
  2. 我应该依赖该代码来复制新功能吗?

1 个答案:

答案 0 :(得分:0)

购买newPurchase = this.currentPurchase

这只复制对currentPurchase对象的引用,而不是创建新对象。您应该使用clone()或只创建一个Purchase对象,然后您可以将currentPurchase中的所有字段映射到新的obj,并将新的obj添加到上下文中。