99

Я создал модель сущности Framework (4.0) из моей базы данных. Я не проектировал базу данных и не имел никакого контроля над схемой, но есть несколько таблиц, которые не имеют ограничений внешнего ключа, но существует неявное отношение.Entity Framework - добавить свойство навигации вручную

Например:

У меня есть таблица под названием People, которая имеет следующие столбцы: GenderID RaceID

Есть столы для обоих полов и гонки, но там нет внешнего ключа в таблице People.

Когда я импортировал модель, она не добавила свойства навигации для этих отношений. Я попытался добавить его вручную, но от роли и роли отключен. Я не уверен, как добавить отношения самостоятельно. Как мне это сделать?

ответ

164

Yup - это не так просто.

Вот что вы делаете:

1 - правая кнопка мыши на дизайнере, Добавить ->Ассоциации

2 - Настройка ассоциации и мощности (люди * .. 1 Пол, человек * ..1 Race)

3 - Перейдите в Model Browser ->ассоциации

4 - Щелкните правой кнопкой мыши на вновь созданных ассоциаций, нажмите Свойства

5 - Здесь вам нужно настроить конечные точки для ключевых и каскадных параметров. Убедитесь, что конечные точки верны. Вы также можете настроить ссылочное ограничение для своего неявного навигационного свойства.

6 - Сопоставить навигационное свойство с соответствующими таблицами/полями.

7 - Подтвердите свою модель, скрестите пальцы.

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

+18

+1 для сохранения того, что осталось от моих волос. Я добавлю # 6, необходимо изменить столбец внешнего ключа на странице свойств ассоциации, настройке ссылочного ограничения. Нажмите [...], чтобы открыть диалог ссылочного ограничения и изменить поле фиктивного текста, которое дизайнер подключил к дочерней таблице в Dependent Property. – 2011-12-17 23:25:55

+7

Вам также нужно перейти к свойствам дочерней таблицы и удалить поле фиктивного текста, добавленное конструктором (и которое не отображается на реальные поля в дочерней таблице). – 2011-12-17 23:41:47

39

Я столкнулся с this blog post, который предлагает следующее решение, которое отлично подойдет для меня (к сожалению, я не смог заставить RPM1984 работать в моей ситуации).

  1. Добавить ассоциацию с помощью дизайнера фоне правой кнопкой мыши контекстное меню
  2. Настройка вашей ассоциации (обязательно снимите создание внешнего ключа)
  3. правой кнопкой мыши на ассоциации и выберите Свойства
  4. Нажмите на ... кнопки для ссылочной Constraint
  5. Установите связь между ключами в пределах
  6. Проверки (от дизайнера контекстного меню)
  7. ???
  8. Прибыль!
Смежные вопросы