c# - 如何使用 Entity Framework 将现有实体添加为新实体

标签 c# .net entity-framework

我想使用 Entity Framework 在我的数据库中创建一个我的对象副本

首先我从DB那里得到了我的“书”

var entity1 = new testEntities();
var book= entity1.Books.First();
entity1.Dispose();

然后,我尝试将这个对象添加为一个新对象

var entity2 = new testEntities();
book.Id = 0;
entity2.SaveChanges();
entity2.Dispose();

我还尝试初始化 Book 的 EntityKey 没用

有没有办法在不创建新 Book 和从旧 Book 复制属性的情况下做到这一点?

谢谢

最佳答案

您需要获取实体,将 ObjectStateManager 中的 EntityState 更改为 Added 并调用 SaveChanges:

var entity1 = new testEntities();
var book = entity1.Books.First();

ObjectStateEntry bookEntry = entity1.ObjectStateManager.GetObjectStateEntry(book);
bookEntry.ChangeState(EntityState.Added);

entity1.SaveChanges();

这将复制您的“书”。

关于c# - 如何使用 Entity Framework 将现有实体添加为新实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3317611/

相关文章:

entity-framework - Entity Framework 覆盖 DatabaseGeneratedOption.Identity

c# - NHibernate : No update with composite key

c# - 在类库错误 :'Controls' 中填充 Combobox 在命名空间 'System.Windows' 中不存在在 WPF 项目中有效

.net - 使用 NGEN 更新 RemoteAPP 应用程序的正确方法

entity-framework - 首先使用实体​​框架代码创建父记录时,在子表中插入记录

c# - 在 linq 中添加带有计数函数的额外列以进行查询?

c# - LINQ 选择表达式 IEnumerable

c# - 数据绑定(bind)到 WPF 中的文本框

.net - 如何将 C++ 中的 2 个变量彼此绑定(bind),以便当一个变量改变另一个变量时?

c# - 异常抛出 : encapsulate them or not?