Уникальные ключи, не распознанные Entity Framework
-
22-09-2019 - |
Вопрос
У меня есть два стола, 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 распознать правильную множественность отношений?
Решение
EF жалуется, потому что это звучит так, как будто вы используете ассоциацию FK - это означает, что VisualizationID является свойством объекта, и также есть ссылка на визуализацию - и вы не можете сделать это с помощью ассоциаций FK.
Однако, если вы используете Независимые ассоциации - что означает отсутствие свойства VisualizationID - вы может сузьте количество элементов.
Таким образом, решение состоит в том, чтобы удалить свойство VisualizationID из объекта, после чего вам нужно продолжить сопоставление ассоциации.
Надеюсь, это поможет
Алекс
Другие советы
Я только что наткнулся на ту же проблему - Алекс, ваше объяснение верно в моем случае, но, конечно, удалив столбец FK из концептуальной модели, я больше не смогу позже переключать связанный объект, изменяя значение поля FK...Мне придется вернуться к старым трюкам, чтобы сделать это!
Есть ли какие-либо планы позволить нам получить наш торт и съесть его тоже с отношениями от 1 до 0 .. 1, т. е.сможете ли вы также иметь поле FK?
Грег
(p.s.Я бы прокомментировал, но моя репутация еще недостаточно высока!)