EF 4 - ассоциации с ключами, которые не совпадают - PullRequest
1 голос
/ 27 апреля 2010

Мы используем POCO и имеем 2 объекта: Item и ItemContact. На изделие имеется 1 или более контактов.

Элемент имеет в качестве первичного ключа:

ItemID LanguageCode

ItemContact имеет:

ItemID ContactID

Мы не можем добавить ассоциацию со ссылочным ограничением, поскольку у них разные ключи. Не существует строгого первичного / внешнего ключа, так как languageCode отсутствует в ItemContact, а ContactID отсутствует в Item.

Как мы можем сопоставить это с ассоциацией для контактов для элемента, если прямой ссылки нет, но я все еще хочу просмотреть контакты для элемента?

Одна из сущностей происходит из представления базы данных, поэтому невозможно добавить внешние ключи в базу данных

Спасибо

Стивен Уорд

1 Ответ

2 голосов
/ 27 апреля 2010

Чтобы создать какие-либо отношения (в EF или ORM), вам нужно что-то присоединиться.

Потому что в данный момент вы этого не делаете, вам нужно что-то сфабриковать ...

Единственный вариант, о котором я могу подумать, - это создать Отношения - используя некоторые из тех же методов, которые описаны в здесь , чтобы создать представление SSDL для поддержки отношений, используя <DefiningQuery> на основе перекрестного продукта присоединиться.

Итак, если у вас есть такие данные:

ItemID | LanguageCode
1 | a

и это:

ItemID | ContactID
1 | x
1 | y
1 | z

Тогда ваш <DefiningQuery> должен иметь T-SQL, который выдает что-то вроде этого:

Item_ItemID | Item_LanguageCode | ItemContact_ItemID | ItemContact_ContactID
1 | a | 1 | x
1 | a | 1 | y
1 | a | 1 | z

Теперь, поскольку технически это Независимая ассоциация - в отличие от ассоциации ФК - вы должны быть в состоянии заявить в CSDL, что количество элементов равно 1 - *, хотя в SSDL нет ничего для ограничить это - и не дать ему быть * - *.

Надеюсь, это поможет

Алекс

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