2009-11-19 3 views
44

Использование VS 2010 beta 2, ASP.NET MVC.Проблемы с картой One-to-One Entity Framework

Я попытался создать файл фреймворка Entity и получил данные из моей базы данных.

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

Ошибка 1 Ошибка 113: Кратность не действует в роли «UserProfile» в отношении «FK_UserProfiles_Users». Поскольку свойства зависимой роли не являются ключевыми свойствами, верхняя граница множественности зависимой роли должна быть *. myEntities.edmx 2024

Мои Пользователи таблица состоит из некоторых других многих ко-многим другим таблицам, но когда я пытаюсь сделать отношения один к одному с другими таблицами, что ошибка всплывает.

Пользователи Таблица

  • USERID
  • Имя пользователя
  • Email

и т.д ..

UserProfiles Таблица

  • UserProfileID
  • Идентификатор_пользователя (FK для пользователей таблицы)
  • Расположение
  • День рождения

ответ

65

Для один-к-одному отношений, EF ожидает, что таблицы используют один и тот же первичный ключ. И действительно, если это правда, один из них, вероятно, должен. Итак, в вашем примере, если вы сделаете UserID основным ключом в таблице UserProfiles, ваш индивидуальный будет работать.

+12

У меня возникла эта проблема, пытаясь установить связь 0..1 - 1 между основной таблицей и таблицей расширений. Расширение как много других отношений, поэтому я не хочу связываться с ПК этого. Любые идеи, как решить эту ситуацию? – Andreas

+1

@junior: это отношение внешнего ключа, и вы можете попасть туда, выбрав отношения, перейдя в свойства и изменив настройки «End1 Multiplicity» и «End2 Multiplicity» (не уверен, что это VS 2010-only). Скорее всего, вы установите значение «End2 Multiplicity» равным «0..1». –

+0

Нет * «should» *, даже если EF не может правильно обрабатывать нормальные RA-кратности и, таким образом, создает совершенно хорошую структуру RA, которую нужно изменить. Это не означает, что модель должна быть изменена, в противном случае это означает, что EF, и он по-прежнему кажется сломанным сегодня, должен быть * исправлен * для правильной моделировки базы данных RA. – user2864740

10

У меня есть аналогичная проблема, но с реалистичным сценарием.

Спокойствие может существовать без продажи, и продажа может существовать без простоя. Это означает, что у меня есть 0 или 1 до 0 или 1 отношений.

Layby ссылки продажа, но layby не может использовать первичный ключ Sale, а Sale не может использовать первичный ключ Layby.

Я решил проблему с помощью отношений с 0 или 1 к многие, сконфигурированный сорбент «Laybys» и сеттер на продажу в частном порядке, а затем при условии моего собственного геттер и сеттер «Layby» в моей POCO ,

+3

Мне любопытно, вы когда-нибудь находили лучший способ захватить такие отношения? – Hannele

Смежные вопросы