Я пытаюсь создать иерархию наследования TPH, используя внешние ключи / свойства навигации в качестве дискриминаторов, и у меня возникают некоторые проблемы с ее правильной настройкой.
У меня есть следующие объекты:
Person:
Id (int)
Name (nvarchar)
PlaneId (int)
CarId (int)
Car:
Id (int)
Name (nvarchar)
Plane:
Id (int)
Name (nvarchar)
с PlaneId
и CarId
beign FKs. У меня есть соответствующие таблицы в базе данных, и я могу создать концептуальную модель с помощью мастера VS2010 EF. Объект Person
имеет два свойства навигации: Car
и Plane
.
.
Теперь я хочу извлечь два типа из Person:
Pilot (condition: PlaneId is not null)
Driver (condition: CarId is not null)
Итак, я добавляю Пилота сущности, говорю ему, чтобы он сопоставился с Персоном и добавляю условие PlaneId is not null
. На этом этапе Visual Studio (или, я полагаю, edmgen) жалуется, что свойство Person.PlaneId with 'IsNull=false' condition must be mapped
.
Каков мой следующий шаг? Я пробовал разные подходы, но не могу заставить его работать. Любая идея будет принята с благодарностью.