Linq Mapping Problem с отношениями от 1 до 0.1 - PullRequest
0 голосов
/ 02 мая 2011

У меня проблема с привязкой к сущности. У меня есть три стола.

Таблица 1 - ItemsB (идентификатор (ключ), Part_Number (будет нулевым до сборки), другая информация о элементе b)
Таблица 2 - ItemsA (ID (ключ), Part_Number (будет нулевым до создания), другой элемент информация)
Таблица 3 - WebItems (Item_id, информация о веб-элементах) * Состоит из элементов из ItemsB и ItemsA после того, как они созданы и перенесены в эту таблицу.

ItemsA / ItemsB будет иметь отношение от 1 до 0,1 с WebItems. Part_Number соответствует Item_id.

Я использую EF4.0.

Проблема заключается в том, что после того, как я настроил ассоциацию / сопоставления, как указано выше, я получаю сообщение об ошибке, в котором говорится: «Проблема в отображении фрагмента в строках примерно такая же: столбец [Part_Number] сопоставляется в обоих фрагментах с различными концептуальными свойствами стороны. «

Обычно я знаю, что делать в этом случае. Избавьтесь от свойства [Part_Number]. Проблема в том, что мне нужно довольно часто обращаться к [Part_Number] в ItemsB и ItemsA, не заходя на веб-элементы. Не говоря уже о веб-элементах, не всегда будет заполняться [Part_Number] в определенные моменты в зависимости от того, были ли элементы помещены в веб-элементы.

Кто-нибудь знает, как это обойти?

Заранее спасибо.

1 Ответ

0 голосов
/ 02 мая 2011

Насколько я понимаю, ItemA и ItemB до WebItem в соотношении один к одному. Отношение один-к-одному в EF всегда требует, чтобы отношение строилось на первичных ключах, а одна сторона является обязательной (основной), поскольку зависимый объект будет иметь первичный ключ и внешний ключ в одном столбце. После назначения первичного ключа в зависимой сущности у вас должна быть основная сущность с тем же первичным ключом, иначе вы нарушите ссылочную целостность, определенную внешним ключом.

Проблема в том, что ваш Part_Number является первичным и внешним ключом одновременно. Чтобы разрешить такое сопоставление в EFv4, вы должны использовать Ассоциация внешнего ключа вместо Независимой ассоциации . Вот краткое описание , как создать ассоциацию внешнего ключа в конструкторе . Как только вы определите ссылочное ограничение, вернитесь в окно сопоставления сопоставления и удалите сопоставление.

...