Закон Деметры путаница

Я надеюсь, что кто-то может помочь мне объяснить закон Деметры. Если у меня есть класс, который, как я предполагаю, является агрегатным корнем, и внутри которого есть коллекция дочерних классов, незаконно ли обновлять свойства этих дочерних классов путем доступа к ним через агрегатный корень?

например

public class Company
{
    // company has a number of employees
    public List<Employee> Employees {get; set;}
}

public class Employee
{
    // each employee has a lastname
    public int Id {get; set;}
    public string LastName {get; set;}
    // other properties of employee
}

допустим, у меня есть клиент, который вначале обращается к классу компании, если он нарушит закон Деметры с чем-то вроде этого.

Employee e = aCompany.Employees.Where(e => e.Id == 1).Single();
e.LastName = "MarriedName";

Или это всегда должно быть передано компании

public class Company
{
    public UpdateEmployeeLastName(int employeeId, string newName)
    {
        Employee e = Employees.Where(e => e.Id == employeeId).Single();
        e.LastName = newName;
    }
}

в клиенте

aCompany.UpdateEmployeeLastName(1, "Marriedname");

Второй кажется лучше, но есть ли что-то не так, когда клиенту нужно знать идентификатор сотрудника, которого он хочет обновить?

Кажется, что это может начать усложняться, если у вас есть несколько вложенных агрегатов.

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос