Entity Framework 4 - Наследование

Я пытаюсь понять сопоставления наследования в EF4 .

В моей базе данных есть две таблицы со следующей структурой:

Таблица PersonCategory:

  • CategoryID (int) (identity) (PK)
  • CategoryType (nvarchar (50))

Person Table

  • PersonID (int) (identity) (PK)
  • CategoryID (FK из таблицы PersonCategory)
  • Имя (nvarchar (50))
  • Описание (nvarchar (max))

Таблица PersonCategory имеет четыре записи каждая представляет категорию - Студент, Инструктор курса, Персонал и Советник.

Из чтения статей в Интернете я подумал, что Таблица на иерархию будет подходящей моделью для этого сценария. Так что в EF4 я создал четыре объекта (Student, CourseInstructor, Staff и Advisor), каждая из которых наследуется от таблицы Person.Затем я сопоставил каждый из них с таблицей Person и добавил к каждому условие (например, CategoryID = 1 для объекта Student и CategoryID = 2 для объекта Staff), чтобы отличать их от других. Я также удалил свойство CategoryID из таблицы Person и сделал его абстрактным классом. Но я получаю следующую ошибку, потому что я удалил свойство CategoryId из таблицы Person.

Ошибка 3015: проблема при сопоставлении фрагментов, начинающихся со строк 101, 108, 114, 120, 126, 133: ограничение внешнего ключа «FK_Person_PersonCategory» из таблицы Person (CategoryID) в таблицу PersonCategory (CategoryID) :: Недостаточное сопоставление: внешний ключ должны быть сопоставлены с некоторыми наборами AssociationSet или EntitySet, участвующими в ассоциации внешнего ключа на концептуальной стороне.

Подходит ли таблица для иерархии модели для этого сценария? Если нет, то как мне подойти к этому сценарию в EF4?

9
задан Uwe Keim 21 July 2013 в 17:50
поделиться