EF adds object instance to navigation property when object instance is deleted
- Dominant language
- C#
- Stars
- 14.8k
- Forks
- 3.4k
- PR merge metrics
- PR metrics pending
Description
// In my code I am passing a user object to a method. The object has been edited and is in a state that
// represents how it is supposted to saved to disk. In this example the user has zero UserDataRoles defined
// that means that if any UserDataRoles exist on disk they should be deleted.
// However for some reason EF adds the UserDataRoles to the user object when the role
// object State is set to deleted.
User user = db.Users.First();
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
Debug.Assert(user.UserDataRoles.Count == 0); // Passes
UserDataRole role = db.UserDataRoles.Where(x => x.UserId == user.UserId).First();
Debug.Assert(user.UserDataRoles.Count == 0); // Passes
db.Entry(role).State = EntityState.Deleted; // EF adds role to user.UserDataRoles here
Debug.Assert(user.UserDataRoles.Count == 0); // Fails. Why is role added to user.UserDataRoles?
Versions:
net8
EF Core 8.0.6
[EFProblem.zip](https://github.com/user-attachments/files/15591380/EFProblem.zip)
Contributor guide
Assessment
This issue has not been assessed yet.