Уникальные ключи не распознаются Entity Framework - PullRequest
8 голосов
/ 26 января 2010

У меня есть две таблицы, Reports и Visualizations. Reports имеет поле VisualizationID, которое указывает на одноименное поле Visualization через внешний ключ. Он также имеет уникальный ключ, объявленный на поле. VisualizationID не обнуляется. Это означает, что отношение должно быть от 0,1 до 1, поскольку каждая Reports запись должна иметь уникальную, не нулевую Visualizations запись, связанную с ней.

Entity Framework не видит это таким образом. Я получаю следующую ошибку:

Error 113: Multiplicity is not valid in Role 'Report' in relationship 'FK_Reports_Visualizations'. Because the Dependent Role properties are not the key properties, the upper bound of the multiplicity of the Dependent Role must be *.

В чем здесь проблема? Как я могу заставить EF распознавать правильную множественность отношений?

Ответы [ 2 ]

3 голосов
/ 27 января 2010

EF жалуется, потому что звучит так, будто вы используете ассоциацию FK - это означает, что VisualizationID является свойством сущности, и есть ссылка на визуализацию - и вы не можете сделать это с ассоциациями FK. *

Если, однако, вы используете Независимые ассоциации - что означает отсутствие свойства VisualizationID - вы можете сузить количество элементов.

Таким образом, решение состоит в том, чтобы удалить свойство VisualizationID из сущности, после чего вам нужно перейти к карте ассоциации.

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

Alex

2 голосов
/ 24 февраля 2010

Я только что наткнулся на ту же самую проблему - Алекс, ваше объяснение верно в моем случае, но, конечно, удалив столбец FK из концептуальной модели, я больше не имею возможности позже переключать связанный объект изменив значение поля FK ... Мне придется вернуться к старым трюкам, чтобы сделать это!

Есть ли планы разрешить нам иметь наш пирог и есть его с отношениями от 1 до 0..1, то есть иметь возможность иметь поле FK?

Грег

(с. Я бы прокомментировал, но мой представитель еще недостаточно высок!)

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