Лучшая практика для представления членов в организации
Какова была бы лучшая практика для представления организации с членами из объектно-ориентированного подхода. Было бы лучше хранить членов как коллекцию внутри модели организации, например, так:
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, оно часто сводится к деталям реализации... как к тому, кому на самом деле нужна ссылка.
Основным недостатком наличия его с обеих сторон является поддержание согласованности - когда вы добавляете / удаляете сотрудника в организацию, вам также необходимо убедиться, что противоположная ссылка также будет добавлена / удалена.