Первоначальная база данных сущностей - реализация рекурсивных отношений таблицы на иерархию (TPH)

Я пытаюсь реализовать рекурсивную связь TPH по одному из конкретных типов, используя Entity Framework 5 и первый подход к базе данных. У меня есть концептуальная модель и табличная структура:

Conceptual modelTable structure

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

ALTER TABLE [dbo].[BaseType]  
WITH CHECK ADD  CONSTRAINT [FK_BaseType_DerivedType] 
FOREIGN KEY([Derived1RecursiveId])
REFERENCES [dbo].[BaseType] ([Id])

Когда я обновляю модель с этим отношением, я получаю диаграмму следующим образом: Problem - Model

Мой вопрос:

Как я могу реализовать рекурсивные отношения в базе данных, так что когда модель обновляется из базы данных (обновляется), рекурсивное отношение устанавливается на DerivedType1?

Ответ 1

Модель EF не может автоматически вывести, что Derived1RecourseiveId является частью класса Derived1. Но вы можете перемещать ассоциацию в свой файл edmx вручную. Просто переместите столбец внешнего ключа, удалите ассоциацию в своей базовой таблице и заново создайте ее на основе. После перемещения он останется в вашем производном типе, даже если вы обновите модель.