简体   繁体   English

如何使用实体框架将现有实体添加为新实体

[英]How to Add existing entity as a new Entity with Entity Framework

I want to create a copy my object in my DB with using Entity Framework 我想使用实体框架在数据库中创建对象的副本

first I got my "Book" from DB 首先,我从数据库获得了“书”

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

then, I tried to add this object as a new object 然后,我尝试将此对象添加为新对象

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

Also I trid to initilize EntityKey of Book it didnt work 我也试图初始化Book的EntityKey没用

Is there any way doing this without creating new Book and copy properties from old one? 有什么方法可以在不创建新的Book和复制旧属性的情况下做到这一点?

Thanks 谢谢

You need to fetch the entity, change the EntityState to Added in the ObjectStateManager and call SaveChanges : 您需要获取实体,在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();

This will copy your 'book'. 这将复制您的“书”。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM