Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Is there any way doing this without creating new Book and copy properties from old one?

Thanks

like image 421
Sessiz Saat Avatar asked Jul 23 '10 11:07

Sessiz Saat


1 Answers

You need to fetch the entity, change the EntityState to Added in the ObjectStateManager and call 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'.

like image 160
Yakimych Avatar answered Sep 20 '22 03:09

Yakimych