Многие ко многим хранят информацию об отношениях - PullRequest
1 голос
/ 19 мая 2011

В ORM (без предпочтений), как лучше всего представить отношение «многие ко многим» между двумя моделями, когда нам нужно хранить информацию об этом отношении?

I have an Order, which can have many Products.
A Product can belong to many Orders.

Заказ может иметь несколько единиц информации, прикрепленных к каждому продукту: количество, специальный запрос, ...

При проектировании базы данных это представлено соединительной таблицей, которая содержит поля quantity и specialRequest.

Но как правильно представить это в ORM, где я просто хотел бы использовать order.products и получить коллекцию Products? Поскольку я планирую использовать Identity Map , во всех заказах должен быть только один экземпляр одного и того же Продукта, что не позволяет мне иметь какой-то "модифицированный" Продукт, который будет содержать дополнительную информацию.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 20 мая 2011

Я согласен с Вадимом выше. Самый простой способ сделать это - добавить промежуточный объект (OrderItem), который представляет эту связь с дополнительными столбцами. Я не думаю, что вы хотите относиться к этому как ко многим между заказами и продуктами.

1 голос
/ 20 мая 2011

Согласно книге Эрика Эванса , ассоциации многие-ко-многим часто вносят в домен большую сложность, и рекомендуемый подход состоит в том, чтобы уменьшить количество таких ассоциаций в вашем домене. В вашем конкретном случае Order - это агрегированный корень, который содержит набор элементов OrderItems, содержащих поля количества и specialRequest.

...