Linq to SQL, отображающий таблицу на себя - PullRequest
0 голосов
/ 19 октября 2011

У меня есть таблица с названием products и таблица сопоставления related_products, которая поддерживает отношения родитель-потомок между продуктами, например, товар SKU_ID 1 имеет похожие товары 2 и 3.

products
    +-----------------+
    |SKU_ID |   name  |
    +-----------------+
    | 1     |  Blah  
    | 2     |  Blah2  |
    | 3     |  Blah3  |
    +-----------------+

related_products
    +---------+------------+
    |SKU_ID_1 |   SKU_ID_2 |
    +---------+------------+
    | 1       |  2         |
    | 1       |  3         |
    | 3       |  2         |
    +---------+------------+

ORM Ассоциации: Отношения OneToMany между products.SKU_ID и related_products.SKU_ID_1 Отношения OneToOne между related_products.SKU_ID_2 и products.SKU_ID

Это прекрасно работает в моем приложении, но когда я смотрю на возвращенные объекты, я вижу, что из-за циклического характера отношений кажется, что я возвращаю слишком много данных. Пример: если я получу все связанные продукты, принадлежащие продукту SKU_ID = 1, я получу продукты 2 и 3, как и ожидалось. Из этих объектов я могу также получить их связанные продукты, затем связанные продукты их связанных продуктов и так далее, и так далее.

Это проблема? и если да, то как я могу ограничить «глубину» возвращаемых ассоциаций? или я сделал отображение неправильно в первую очередь?

1 Ответ

0 голосов
/ 19 октября 2011

Я думаю, что такая ассоциация в порядке.

Поскольку Linq2sql по умолчанию загружается медленно, нет необходимости ограничивать отдел.Вы будете получать соответствующие продукты только тогда, когда используете их в своем коде.(Если вы беспокоитесь о слишком большой загрузке, просто профилируйте sql, и вы увидите, когда / до какого уровня они загружаются.)DCЯ не знаю, как с этим справиться.

Благодаря Джиму Вули я знаю, что LoadOptions не разрешены с циклическими ссылками ....

...