Лучшая практика для представления членов в организации

Какова была бы лучшая практика для представления организации с членами из объектно-ориентированного подхода. Было бы лучше хранить членов как коллекцию внутри модели организации, например, так:

public class Organisation
{
    public Guid Id { get; set; }

    public ICollection<Person> Members { get; set; }

    // the rest of the code
}

Или лучше не хранить их внутри Организации, а сделать ссылку в классе Person на организацию (и), например:

public class Organisation
{
    public Guid Id { get; set; }

    // the rest of the code
}

public class Person
{
    public ICollection<Organisation> OrganisationMemberships { get; set; }

    // the rest of the code
}

Говоря о подходе, который делает необходимым тесную взаимосвязь между ними, то есть программа будет представлять не только организацию или человека, но и информацию из обоих. Скажем, количество руководителей отделов в компании, которая имеет свое имя и общее количество сотрудников. Также модель нацелена на связанные организации, также как и структура военных подразделений и / или дочерних компаний.

Каковы последствия производительности обоих способов? Один путь явно лучше другого или все сводится к личным предпочтениям?

1 ответ

Поскольку это отношение N:M, оно часто сводится к деталям реализации... как к тому, кому на самом деле нужна ссылка.

Основным недостатком наличия его с обеих сторон является поддержание согласованности - когда вы добавляете / удаляете сотрудника в организацию, вам также необходимо убедиться, что противоположная ссылка также будет добавлена ​​/ удалена.

Другие вопросы по тегам