Полиморфные ассоциации в LINQ to SQL - PullRequest
2 голосов
/ 04 февраля 2009

Обеспечивает ли LINQ to SQL готовые полиморфные ассоциации, как это делает активная запись ruby ​​on rails? Если нет, есть ли способ вручную сопоставить эти ассоциации?

Ответы [ 2 ]

2 голосов
/ 04 февраля 2009

Согласовано. Я не нашел никакого способа сделать это ни с помощью конструктора, ни вручную добавляя атрибуты класса / метода. Более того, невозможно иметь ограничения внешнего ключа для полиморфных ассоциаций. Я отказался от этой опции, спасибо.

1 голос
/ 04 февраля 2009

Editted

SQL Server не позволяет иметь отношение внешнего ключа к столбцу, который не является первичным ключом или не имеет уникального ограничения (или индекса) на нем. Кажется, нет никаких ограничений на то, чтобы несколько таблиц использовали один и тот же столбец в дочерней таблице в качестве внешнего ключа. Дизайнер DBML обнаруживает эти отношения и создает ассоциации с обеими родительскими таблицами при импорте таблицы. Однако создается впечатление, что сгенерированный дизайнером код будет сгенерирован только для одной из ассоциаций. То есть дизайнер правильно показывает ассоциации, но код для всех, кроме одного, опущен. Кроме того, методы расширяемости и установщики свойств, по-видимому, также не определяются должным образом в сгенерированном дизайнером коде.

То же самое можно сказать, если вы добавляете ассоциации вручную в конструкторе. В коде реализована только одна из фактических ассоциаций, а код другого родительского класса кажется безвозвратно нарушенным. Возможно, вы сможете использовать частичные реализации классов для добавления требуемой функциональности, чтобы соответствовать тому, что сгенерирует дизайнер, но я не пробовал этого.

Кроме того, LINQ2SQL не поддерживает готовые отношения «многие ко многим». Вы ограничены 1-1 и 1-многими без написания кода самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...