如何将现有实体添加为具有实体框架的新实体

Ses*_*aat 5 .net c# entity-framework

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

首先我从DB获得了我的"书"

var entity1 = new testEntities();
var book= entity1.Books.First();
entity1.Dispose();
Run Code Online (Sandbox Code Playgroud)

然后,我尝试将此对象添加为新对象

var entity2 = new testEntities();
book.Id = 0;
entity2.SaveChanges();
entity2.Dispose();
Run Code Online (Sandbox Code Playgroud)

我也试图初始化Book的EntityKey它没有用

有没有办法这样做而不从旧的Book创建新的Book和copy属性?

谢谢

Yak*_*ych 6

您需要获取实体,更改EntityStateAdded在中ObjectStateManager调用SaveChanges:

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

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

entity1.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

这将复制您的"图书".