Мой руководящий принцип - стремиться к простоте.Я не использую их, пока мне не понадобится .:) Как и любой другой открытый член или метод (или любой другой код), он должен существовать только в том случае, если это существование оправдано.
Наличие обратного свойства означает, что я могу рассматривать эту сущность какна верхнем уровне и должны иметь возможность ссылаться на связанный объект.Например, Клиент содержит Заказы, поэтому вопрос заключается в том, должна ли ссылка на Заказ возвращаться к его Клиенту?
Если я могу запрашивать заказы (независимо от Клиента) и хочу иметь возможность доступа к информации о клиенте в этих запросах, тогдавыгодно иметь обратное свойство.
var orderDetails = context.Orders.Where(o => o.OrderDate == DateTime.Today)
.Select(o => new
{
o.OrderId,
o.OrderNumber,
CustomerName = o.Customer.Name
}).ToList();
В отличие от присоединения клиента и заказа в запросе, чтобы получить доступ к деталям клиента и заказа через однонаправленную ссылку.(Я пытался написать пример из памяти, но он стал слишком уродливым и слишком быстрым.: D)
Где не имеет смысла, это «всегда» иметь двунаправленные ссылки.Например, когда у вас есть что-то вроде Address и AddressType.AddressType никогда не нужно будет знать о списке адресов этого типа, и даже если вы захотите запросить эту информацию, ее достаточно легко отфильтровать по однонаправленной ссылке.Имеет смысл, что Адрес (относительно типа адреса) является ссылкой верхнего уровня, где, поскольку имеет смысл, что вы можете ссылаться на заказы от клиента или клиента из заказа.