удалить свойство внешнего ключа вызвать исключение - PullRequest
6 голосов
/ 22 апреля 2011

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

Я получил это исключение, связывающее отношения между сущностью Company и CompanyType:

Ошибка 5: Элемент «Принципал» в пространстве имен 'http://schemas.microsoft.com/ado/2008/09/edm' имеет неполное содержание.Список возможных ожидаемых элементов: 'PropertyRef' в пространстве имен 'http://schemas.microsoft.com/ado/2008/09/edm'.

enter image description here

Как можно удалить эти идентификаторы из POCO без получения исключения?

Ответы [ 2 ]

8 голосов
/ 22 апреля 2011

Это разница между Ассоциацией внешнего ключа и Независимой ассоциацией .Обе ассоциации используют свойства навигации, но только связь с внешним ключом также использует свойство FK.Вы можете либо удалить их глобально, как упомянул @Robbie, либо изменить тип вручную для выбранного отношения.

  • Выберите отношение в конструкторе каркасов сущностей
  • В свойствах удалите ссылочные ограничения
  • Перейдите в окно Mapping и отобразите отношение

Вот снимок экрана одного из моих тестовых приложений с отношением один-ко-многим между Order и OrderLine сущностями:

enter image description here

Как видите, здесь нетOrderId в сущности OrderLine и ссылочные ограничения отношения пусты.Также указывается отображение отношения.

НО Вы никогда не сможете удалить Id из CompanyType.Идентификаторы (PK) являются обязательными.Вы можете изменить его доступность только в его свойствах.

4 голосов
/ 22 апреля 2011

Когда вы импортировали свою модель из БД, вас спросят, хотите ли вы:

«Включить столбцы внешнего ключа в модель» Вы должны отключить это.

enter image description here

...