我试图克隆/复制一个实体对象并将其插入到DB中。我正在使用实体框架。
我在这里和其他论坛上发现了几个类似的问题。虽然确切的问题,但没有一个解决方案对我有效。
Application orginalApp = new Application().GetById(origAppId);
Application clonedApp = orginalApp.Clone<Application>(); //uses DataContractSerializer
DataBaseContext.Current.Detach(orginalApp); // Current is a property which returns Database context which is stored in httpcontext.current.items
clonedApp.EntityKey = null; // tried with and without this
clonedApp.Application_Id = 0; // tried with and without this. This is the primary key
clonedApp.Application_Name += " (clone)";
clonedApp.Create(); //The usual Addobject and SaveChange()这会引发以下错误:
-- ObjectStateManager中已经存在具有相同键的对象。ObjectStateManager无法用相同的键跟踪多个对象。
我试图在对象状态管理器中检查对象是否存在。
DataBaseContext.Current.ObjectStateManager.GetObjectStateEntry(clonedApp)它给了我空壳。
*但是,我找不到解决方案,只好用反射来解决需求。
发布于 2011-12-16 10:57:21
此错误表示对新对象的主键与对旧对象的主键相同,如果要克隆行,则需要为克隆行创建一个新的PK。
https://stackoverflow.com/questions/8518265
复制相似问题