Entity Framework 5 deep copy/clone of an entity

One cheap easy way of cloning an entity is to do something like this:

var originalEntity = Context.MySet.AsNoTracking()
                             .FirstOrDefault(e => e.Id == 1);
Context.MySet.Add(originalEntity);
Context.SaveChanges();

the trick here is AsNoTracking() – when you load an entity like this, your context do not know about it and when you call SaveChanges, it will treat it like a new entity.

If MySet has a reference to MyProperty and you want a copy of it too, just use an Include:

var originalEntity = Context.MySet.Include("MyProperty")
                            .AsNoTracking()
                            .FirstOrDefault(e => e.Id == 1);

Leave a Comment