Единственная причина, по которой я наткнулся на использование сопоставления «один ко многим», заключается в производительности.
Сначала я работал один на один, пока проект не столкнулся с проблемой производительности. Проблема возникает из-за того, что у вас обычно не может быть отложенной загрузки для сопоставления один к одному на обратной стороне. Например. когда у вас есть объект A, который может (но не обязан) иметь связанный объект B в этом отображении. В этом случае для каждой загружаемой сущности A также загружается сущность B. Это сделано для предотвращения ошибки при проверке, существует ли связанный объект. Прокси-сервер для отложенной загрузки может ввести вас в заблуждение, полагая, что связанная сущность существует, даже если ее нет. Если вы проверите подобное существование связанной сущности, у вас возникнет проблема
if (entityA.EntityB == null) HandleNoEntityB();
Однако, если вы используете отображение один-ко-многим, отложенная загрузка не является проблемой, поскольку разработчик работает с коллекцией, для которой мы можем создать прокси.
if (entityA.EntitiesB.Count == 0) HandleNoEntityB();
Это не должно быть проблемой, если в вашей системе можно предположить, что у сущности A всегда есть ровно одна связанная сущность B. В этом случае вы должны установить contrained = "true" для этого сопоставления.