Допустим, у вас есть Клиент, и в какой-то момент вам нужно что-то с его Заказами, и, возможно, у него есть Бонус за его Заказы.
Тогда я бы определил репозиторий с свободным интерфейсом, который позволит мне сказать что-то вроде:
new ClientRepo().LoadClientBy(id)
.WithOrders()
.WithBonus()
.OrderByName();
И вот у вас есть клиент со всем необходимым. Желательно, чтобы вы заранее знали, что вам понадобится для текущей операции. Таким образом, вы можете избежать нежелательных поездок в базу данных (обычно это будут делать новые разработчики в вашей команде - вызывайте свойство и не обращайте внимания на тот факт, что это фактически вызов БД)