I have an entity that has a value object and this value object has another value object. My issue is that when updating the entity along with the value objects, the entity with the parent value object get updated but the child value object didn't. note, i used latest version of Entity Framework Core 2.1.0-rc1-final this is the parent entity Employee
public class Employee : Entity
{
public string FirstName { get; private set; }
public string LastName { get; private set; }
public string Email { get; private set; }
public Address Address { get; private set; }
}
and this is the parent value object Address
public class Address : ValueObject<Address>
{
private Address() { }
public Address(string street, string city, string state, string country, string zipcode, GeoLocation geoLocation)
{
Street = street;
City = city;
State = state;
Country = country;
ZipCode = zipcode;
GeoLocation = geoLocation;
}
public string Street { get; private set; }
public string City { get; private set; }
public string State { get; private set; }
public string Country { get; private set; }
public string ZipCode { get; private set; }
public GeoLocation GeoLocation { get; private set; }
}
and this is the child value object GeoLocation
public class GeoLocation
{
private GeoLocation()
{
}
public GeoLocation(decimal longitude, decimal latitude)
{
Latitude = latitude;
Longitude = longitude;
}
public Decimal Longitude { get; private set; }
public Decimal Latitude { get; private set; }
}
and when updating the employee, i first get it from database, then change Address property using the new value obtained from user interface
var employee = _repository.GetEmployee(empId);
employee.SetAddress(newAddress);
and the SetAddress method
public void SetAddress(Address address)
{
Guard.AssertArgumentNotNull(address, nameof(address));
Address = address;
}