EF Core - how to audit trail with value objects
In the case where you value objects are mapped to a single column in the database (e.g. an email address is stored in a text column) you might be able to use converters instead:
var emailAddressConverter = new ValueConverter<EmailAddress, string>(
emailAddress => emailAddress.Value,
@string => EmailAddress.Create(@string));
modelBuilder.Entity<User>()
.Property(user => user.Email)
.HasConversion(emailAddressConverter);
This should work well with your change tracking code.