Entity Framework Проблемы сопоставления один-к-одному - PullRequest
46 голосов
/ 19 ноября 2009

Использование VS 2010 beta 2, ASP.NET MVC.

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

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

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

Таблица «Мои пользователи» состоит из некоторых других отношений «многие ко многим» с другими таблицами, но когда я пытаюсь установить отношение «один к одному» с другими таблицами, появляется эта ошибка.

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

  • Идентификатор_пользователь
  • Имя пользователя
  • E-mail

и т.д ..

Таблица пользовательских профилей

  • UserProfileID
  • UserID (FK для таблицы пользователей)
  • Местоположение
  • День рождения

Ответы [ 3 ]

66 голосов
/ 19 ноября 2009

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

10 голосов
/ 03 ноября 2012

У меня похожая проблема, но со сценарием продажи и ожидания.

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

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

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

0 голосов
/ 21 июня 2018

Сделать составной первичный ключ для двух столбцов UserProfileID и UserID

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