Не уверен, как исправить эту странную ошибку Entity Framework (отношения / навигация) - PullRequest
3 голосов
/ 24 марта 2011

Я получаю следующее сообщение об ошибке, когда пытаюсь сохранить объект poco, используя Entity Framework в качестве OR / M: -

Объекты в SqlServerContext.Foos участвуютотношения 'FK_Foos_Bahs'.0 связанных 'Bah' были найдены.1 Ожидается «Бах».

Хорошо - сообщение об ошибке имеет смысл - но это НЕ то, что я смоделировал :( (или пытаюсь смоделировать). Он говорит, что если яхотите сохранить Foo, тогда мне нужен 1 экземпляр Bah. A Foo может существовать без Bah. Отношение должно быть 1 <-> 0-or-1 .. не 1 <-> 1.

Вот модель в EF ...

enter image description here

enter image description here

enter image description here

Может кто-нибудь увидеть, что я сделалнеправильно?

Ответы [ 2 ]

2 голосов
/ 24 марта 2011

Похоже, ваши отношения задом наперед - ваш снимок экрана показывает, что на 1 баха много Foos, а на Foo ровно 1 бах - похоже, вам нужно поменять местами концы, чтобы у 1 Foo было много бахов, а у бахов ровно 1 фу.

Вы также можете установить 0 ... 1 для многих отношений (каждый бах может иметь много Foos, Bahs имеет 0 или 1 Foo) или 0 ... 1 к 1 отношениям. .Net создаст пустые поля в базе данных и пустые свойства в вашей модели, и вам будет разрешено сохранять данные без связей.

Я знаю, что вы, вероятно, работаете с конфиденциальными данными, отсюда и вычеркивание, но, возможно, если вы поменяете их на более значимую подделку, вам будет легче понять, что вы пытаетесь сделать! Фу и Бах демонстрируют менее интуитивную демонстрацию, чем что-то одинаково очищенное, например, люди и домашние животные, хобби или что-то еще.

2 голосов
/ 24 марта 2011

Ваша модель, вероятно, не так. В данный момент вы говорите, что Bah является главной сущностью многих Foos. Это отношение один ко многим, а не один к одному. Также вы определили Bah как обязательный в Foo, потому что кратность на Bah равна 1 , а не 0..1 .

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