Производные ассоциации в .Net Entity Framework - PullRequest
0 голосов
/ 09 августа 2010

Я хочу иметь одну таблицу, которая представляет человека, и иметь ряд других таблиц (например, ученик / учитель), использующих таблицу Person для хранения информации, связанной с человеком. К сожалению, структура сущностей, похоже, не нравится, когда я пытаюсь добавить связь между классом ученика или учителя, и я не понимаю, почему. Таблица Person содержит столбец с именем ParentEntityID, который равен либо StudentEntityID, либо TeacherEntityID. В идеальном мире я хотел бы иметь возможность ссылаться на таблицу Person, выбрав Student.Person.FirstName вместо Student.Entity.Person1.FirstName. Ошибка .Net возвращается при попытке подключить таблицу ученика / учителя к таблице Person:

Ошибка 3007: проблема в отображении Фрагменты, начинающиеся со строк 265, 289: Столбцы без первичного ключа [ParentEntityID] сопоставляется в оба фрагмента разные концептуальные свойства стороны - несоответствие данных возможно, потому что соответствующий концептуальные побочные свойства могут быть независимо изменены.

Реальная база данных, с которой я работаю, немного сложнее и имеет несколько таблиц, связанных с таблицей сущностей, что делает мою объектную модель довольно неоднозначной и надеется немного ее почистить, используя сущность рамки.

Я не большой гуру баз данных, обычно я работаю над интерфейсом ... Можно ли сделать то, что я хочу, или есть лучшее решение?

Я использую VB.Net 3.5 в веб-приложении.

альтернативный текст http://commonfish.com/images/2010-stackoverflow1.png


Обновление ...

В попытке усвоить различные типы отношений, которые я могу сформировать, я играл на этом простом примере и предложил следующие возможности: альтернативный текст http://commonfish.com/images/2010-stackoverflow2.png

альтернативный текст http://commonfish.com/images/2010-stackoverflow3.png

И причина, по которой я не могу установить связь между таблицей «Студент» и «Адрес», заключается в том, что эта связь не поддерживается в базе данных. Если бы я хотел связать эти две таблицы, мне нужно было бы переосмыслить дизайн моей базы данных. Это верно? То, что я хочу сделать, не поддерживается Entity Framework?

Также, глядя на страницу, на которую ссылается мистер Пратт , звучит так, как будто .Net 4 поддерживает ассоциации внешних ключей, что я и пытаюсь сделать. Я правильно истолковываю эту статью ??

1 Ответ

0 голосов
/ 09 августа 2010

Я полагаю, что вы получаете ошибку, потому что структура сущностей хочет, чтобы только одно свойство отношений / навигации владело или управляло свойством ParentEntityID.Если, например, вы должны установить свойства навигации «Учитель» и «Ученик» для сущности «Персона», EF не будет знать, какой из них должен «выиграть».

Может ли один «Персона»быть учеником и учителем?Если нет, я бы предложил смоделировать это как сущности «Ученик» и «Учитель», наследующие от «Персона» через наследование TPT (таблица на тип) (пример) .

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