There are not many option to solve it. EF doesn't have any direct support for updating disconnected object graphs. You must code your update logic and there are generally two ways how to do it:
- When you receive updated user from the service request you will call database and fetch current database state = user with all affected relations. You will use database version and updated version to build valid change set so at the end EF will update, insert and delete only data which have really changed.
- You will modify your DTOs to transport state as well and your client will be responsible for setting the type of modification he did on the DTO. You will use this information to correctly configure
ChangeTracker
for every received entity.