ADO .NET Entity Framework моделирование наследования - PullRequest
0 голосов
/ 21 марта 2012

example simplified class structure

Привет всем

У меня проблема с платформой Entity, в основном, как вы можете видеть в приведенном выше классе диаграмм A - абстрактный класс, которыйимеет два класса, которые наследуются от него B & C .

Каждый класс имеет идентификатор, который не является обязательным, но был частью реляционной структуры Проектирование базы данных .

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

, и именно здесь начинаются мои проблемы.

Классы, кажется, неработает правильно ассоциации не работают?

Было ли удаление FK корректным или я должен был оставить его на месте и использовать наследство?

Мне нужноклассы B и C для наследования A в моем бизнес-уровне.

Модель не выглядит правильной, и я был бы рад любойпомощь в создании этой модели.

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Вы не должны иметь (отдельный) FK для PK A .

Наследование предполагает, что B.Id будет PK, а FK - A.Id.

1 голос
/ 21 марта 2012

Я думаю, что проблема в том, что у вас есть отдельные PK и FK, которые связывают ваши таблицы. EF ожидает, что дочерние таблицы имеют единственный столбец «id» в дочерних таблицах, то есть как PK, так и FK.

Вот снимок примера базы данных, которая у меня есть (она была сгенерирована EF, но вы понимаете, о чем я говорю):

Example

Здесь вы увидите, что Jobs является базой, а два других получены из Jobs. Вы увидите, что поле Id в Jobs - это PK, а в двух других таблицах поле Id - это и PK, и FK, возвращаясь к Jobs.

Как я уже сказал, эта модель была сгенерирована EF (сначала Модель), но я уверен, что именно так EF хочет видеть вещи, поэтому я не думаю, что ваша база данных будет вписываться в структуру наследования EF.

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