Существует множество способов обрезать шкуру этой конкретной кошки, и для вынесения рекомендации действительно необходим подробный доступ к требованиям вашей системы плюс достаточно времени для рассмотрения вариантов.Однако, предполагая, что эти отношения не могут быть получены (см. Последний абзац), я бы, возможно, рассмотрел что-то вроде следующего: -
public class Company
{
public string Name { get; set; }
public IEnumerable<Relationship>
{
get { ... }
}
}
public class Relationship
{
public RelationshipType { get; set; }
public Company { get; set; }
}
public enum RelationshipType
{
Other,
Debtor,
Creditor,
Lead,
}
Это предполагает, что различия между отношениями тривиальны, посколькуВаша ОО модель обеспокоена.Однако, если вам требуется поведение из ваших отношений, специфичных для данного типа, я бы рассмотрел подтип, например:компании.Например, компания X является должником компании Y тогда и только тогда, когда компания X должна деньги компании Y. Содержится ли эта информация в вашей системе?Если да, действительно ли вы хотите де-нормализовать эту информацию или было бы лучше получить ее на лету?Если эта информация является внешней по отношению к вашей системе, и ваша система специально разработана для проведения нормализации этих фактов, вы можете игнорировать этот параграф.