Как сопоставить наследование таблиц по типу (TPT) в конструкторе сущностей? - PullRequest
6 голосов
/ 26 марта 2011

Я создал большое количество таблиц в своей базе данных, вот проблемные:

Table Name -Item
    ItemID - PK (Auto Increment)
    Title        

Table Name -Game
    ItemID - PK
    Console   

Table Name -Film
    ItemID - PK
    Type

Я также добавил связь между ItemID Item и Film-Item и Game-Item

Проблема в том, что когда я помещаю это в Visual Studio и использую Entity Framework, кажется, что он несколько сворачивает классы и полностью удаляет Film и Game ... Я не могу использовать Game или Film в качестве объекта в моем ASP-кодеесть идеи как это решить?

1 Ответ

4 голосов
/ 26 марта 2011

Да, именно так ведет себя дизайнер Entity.Если вы моделируете свою структуру в базе данных и используете Обновите модель из базы данных , то она действительно будет смоделирована как общие ассоциации, поскольку EF еще не знает, что вы хотите смоделировать ее как наследование.Вы получите это:

enter image description here

Вы должны вручную изменить эту модель, чтобы использовать наследование TPT.Сначала удалите оба отношения.Он также удалит свойства навигации, и вы получите следующее:

enter image description here

Используйте Наследование из панели инструментов (как описано на предыдущем снимке экрана) и нарисуйте линию из Film до Item и от Game до Item.Теперь вам нужно закончить эту модель.Текущая модель не будет проверена, потому что ItemId отображается как в родительском, так и в дочернем объекте.Удалите ItemId из сущностей Film и Game.Вы также можете сделать Предмет сущностью Абстрактным и получите:

enter image description here

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