首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体对象:克隆和插入

实体对象:克隆和插入
EN

Stack Overflow用户
提问于 2011-12-15 10:03:47
回答 1查看 301关注 0票数 0

我试图克隆/复制一个实体对象并将其插入到DB中。我正在使用实体框架。

我在这里和其他论坛上发现了几个类似的问题。虽然确切的问题,但没有一个解决方案对我有效。

代码语言:javascript
复制
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无法用相同的键跟踪多个对象。

我试图在对象状态管理器中检查对象是否存在。

代码语言:javascript
复制
DataBaseContext.Current.ObjectStateManager.GetObjectStateEntry(clonedApp)

它给了我空壳。

*但是,我找不到解决方案,只好用反射来解决需求。

EN

回答 1

Stack Overflow用户

发布于 2011-12-16 10:57:21

此错误表示对新对象的主键与对旧对象的主键相同,如果要克隆行,则需要为克隆行创建一个新的PK。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8518265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档