Я бы, вероятно, изменил код, чтобы передать Guid статическому фабричному методу, который затем выполнил поиск и передал восстановленную сущность конструктору. Таким образом, сам конструктор не должен выполнять столько работы.
В большинстве случаев я бы сделал все это с нетерпением - хотя бы обычно странно иметь объект, который "кажется" простым, но который затем выполняет потенциально дорогой и ошибочный поиск в базе данных, когда Вы получаете доступ к свойствам. И да, вы должны стремиться получить все в одном поиске в базе данных - если только одно из свойств не является коллекцией само по себе и т. Д. Если это всего лишь случай выборки простых полей из базы данных, было бы безумно выполнить один поиск в доступ к свойству - который может также привести к несогласованности данных.