实体框架数据库首先 - 每个层次表(TPH)递归关系实现

Oli*_*nad 10 c# sql sql-server entity-framework

我正在尝试使用Entity Framework 5和Database first方法在其中一个具体类型上实现TPH递归关系.我有概念模型,表结构如下:

概念模型 表结构

另外,我在我的数据库表中有这样的递归关系.

ALTER TABLE [dbo].[BaseType]  
WITH CHECK ADD  CONSTRAINT [FK_BaseType_DerivedType] 
FOREIGN KEY([Derived1RecursiveId])
REFERENCES [dbo].[BaseType] ([Id])
Run Code Online (Sandbox Code Playgroud)

当我用这种关系更新模型时,我得到这样的图: 问题 - 模型

我的问题是:

如何在数据库中实现递归关系,以便在从数据库更新模型(刷新)时,在DerivedType1上设置递归关系?

cod*_*orx 1

EF 模型不可能自动推断 Derived1RecourseiveId 是 Derived1 类的一部分。但您可以手动移动 edmx 文件中的关联。只需移动外键列,删除基表上的关联,然后在派生表上重新创建它。一旦移动,即使您进行模型刷新,它也将保留在您的派生类型中。