Я хочу инкапсулировать внутренние компоненты моего агрегата, но сейчас я могу просто позвонить Person.Address.Update()
и иметь возможность напрямую изменять эту сущность.
Я хотел бы сделать Person.Address
вместо этого приватное поле, недоступное извне совокупного корневого класса.Может кто-нибудь объяснить, как сделать свободное сопоставление API для Entity Framework Core.Адрес идет в своей таблице (отношения один на один с человеком).Я не могу заставить его работать и не хочу зацикливаться на текущем дизайне.
public class Person : Entity, IAggregateRoot
{
public string FirstName { get; private set; }
public string LastName { get; private set; }
public Address Address { get; private set; }
private Person() { }
public Person(string firstName, string lastName, Address address)
{
FirstName = firstName;
LastName = lastName;
Address = address;
}
public void UpdateAddress(string streetName)
{
Address.Update(streetName);
}
}
public class Address : Entity
{
public string StreetName { get; private set; }
private Address() { }
public Address(string streetName)
{
StreetName = streetName;
}
public void Update(string streetName)
{
StreetName = streetName;
}
}