
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

Jan 05, 2020 - 3 min read
Expose OpenSearch Endpoint with an ASP.NET Core Controller Action
OpenSearch OpenSearch is a standard that has existed for about 15 years and is used by search engines and Browsers.

Dec 19, 2019 - 3 min read
Entity Framework 3 - Migrations
Install EF Core 3 Migration tools The tooling of the Entity Framework Core Migrations comes via NuGet (and dotnet tooling).

Dec 16, 2019 - 3 min read
Custom PasswordHasher in ASP.NET Core Identity
In the ASP.NET Core Identity environment, the PasswordHasher is responsible for securely storing the password and performing password entry …
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.
