You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm in the process of creating an audit log for changed entities/properties but I cannot seem to get original values from an Owned Entity property once that Owned Entity has been replaced by a new instance.
Some of my Entities have properties which are Value Object / Owned Entities (and some of those have nested owned entities). I seem to have hit a blocker whereby I cannot retrieve the old value of an owned entity property once the owning Entity has replaced the owned entity with a new one.
The Owned Entity OriginalValues collection or the call to .GetDatabaseValues() returns the new Owned Entity instance, not the original one as is in the database (n.b. saveChanges has not yet been called).
It is possible to get the original values of an owned entity, even when the owned entity has been replaced by a new instance of that type?
@ItsSmiffy The original values are not available because the original entity is marked as Deleted, while the new entity is marked as Added. However, due to the way owned entities are used it would be worthwhile to add support for getting original values this case. Putting this on the backlog to consider for a future release.
From the comment above, it sounds like when a Value Object (owned type) is replaced on an entity, the ChangeTracker should have two EntityEntries for that property: one for the old one (with an EntityState.Deleted state) and the new one (with an EntityState.Added state). Am I understanding that correctly?
In working with EF Core 5, I have not found this to be the case. That is, if I replace an existing Value Object with a new one, I only get an 'Added' entry in the change tracker - no 'Deleted' entry. Is this the intended behaviour?
Our modeling relies heavily on owned entities and we are also being affected by this shortcoming.
AndriySvyryd
changed the title
Cannot get original values of owned entity.
Support OriginalValues and GetDatabaseValues for shared entity entries
Jan 14, 2022
I'm in the process of creating an audit log for changed entities/properties but I cannot seem to get original values from an Owned Entity property once that Owned Entity has been replaced by a new instance.
Some of my Entities have properties which are Value Object / Owned Entities (and some of those have nested owned entities). I seem to have hit a blocker whereby I cannot retrieve the old value of an owned entity property once the owning Entity has replaced the owned entity with a new one.
The Owned Entity OriginalValues collection or the call to .GetDatabaseValues() returns the new Owned Entity instance, not the original one as is in the database (n.b. saveChanges has not yet been called).
It is possible to get the original values of an owned entity, even when the owned entity has been replaced by a new instance of that type?
EF Core version: 2.2.6
Database provider: Pomelo (v.2.2.6)
Target framework: .NET Framework 4.6
Operating system: Win 10
IDE: Visual Studio 2019 16.4.1
The text was updated successfully, but these errors were encountered: