
This article was written in 2020. Versions, tools and recommendations may have changed since then. Newer posts are collected under .NET.
Often you want to duplicate entities or their values in order to save an entity with a new ID. But what is the best way to do this?
There are many examples in the vastness of the Internet based on Object.Clone() or Reflection.
But this is not necessary. Entity Framework has inherent methods to copy values.
DbContext Clone
To simply copy values from an existing entity to a new entity, you have two stable ways.
Copy values to a local var first:
1var values = db.Entry(oldEntity).CurrentValues.Clone();
2var newEntity = ...
3db.Entry(newEntity ).CurrentValues.SetValues(values);
4newEntity.Id = 0;Directly copy values from old entity to new entity.
1db.Entry(newEntity).CurrentValues.SetValues(oldEntity);
2newEntity.Id = 0;These methods are stable and not based on any Reflection tinkering.
Related articles

- 16 min read
Production Rate Limiting in ASP.NET Core
Most ASP.NET Core rate-limiting examples stop after registering a fixed window. That is enough to demonstrate the middleware, but it is not …

- 11 min read
The Big Decimal Bugfix with .NET 11
For more than two decades, (decimal)1.23 returned 1.23m. It looked correct, it passed every test and it was a polite lie.

- 10 min read
Distroless, Chiseled or Alpine: Choosing a .NET Base Image
Distroless, Chiseled and Alpine are often compared as three equivalent Linux distributions. They are not. Alpine is a distribution built …
Let's Work Together
Looking for an experienced Platform Architect or Engineer for your next project? Whether it's cloud migration, platform modernization or building new solutions from scratch - I'm here to help you succeed.
