Entity Framework - Добавить свойство навигации вручную - PullRequest
108 голосов
/ 17 декабря 2010

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

Например:

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

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

Ответы [ 2 ]

176 голосов
/ 17 декабря 2010

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

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

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

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

3 - Перейдите в Обозреватель моделей -> Ассоциации

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

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

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

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

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

44 голосов
/ 30 января 2014

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

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