Наследование в структуре сущностей - таблица для конкретного класса? - PullRequest
2 голосов
/ 30 июля 2010

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

Идея в том, что я могу сказать "хорошо", просто принесите мне все содержимое сайта за последние 10 дней, мне все равно, блог это или статья.Затем, когда мне нужно получить статью, я пойду и получу конкретную сущность.

Я настроил базу данных контента и включил все общие свойства блога и цели.Проблема в том, что я пытаюсь сказать в содержании.У меня есть ДВА сопоставления: одно в таблицу блогов, а другое - в таблицу статей, и EF жалуется, что не может решить, какую из них перейти.Я надеялся добавить условия, чтобы сделать это, но если я добавлю условие, специфичное для блога (это не указано в моем базовом классе), он жалуется, что не может найти сопоставление.

Я задаю свой первый вопрос: я смотрю на это совершенно задом наперед, чтобы моя сущность Contents получила данные из таблицы статей и таблицы блога?

Спасибо

Фил

Редактировать: Добавление модели и схемы БД

alt text alt text

Ответы [ 2 ]

0 голосов
/ 04 февраля 2012

Как уже упоминалось здесь в EF ADO.NET Designer нет поддержки наследования TPC (но изначально EF).Так что это должно быть реализовано вручную в xml или Code First.

0 голосов
/ 10 сентября 2010

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

Затем вы можете добавить представление в модель Entity, использовать его для выполнения сценария использования «получить контент за последние 10 дней», а затем, когда вам понадобится дополнительная информация, использовать дополнительный ключ, добавленный в представление, чтобы определить вам нужно зайти в блог или статью сущностей. Я знаю, что это не так чисто и аккуратно, как вы хотите, но это может сработать.

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