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

时间:2014-03-09 16:25:22

标签: c# sql sql-server entity-framework

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

Conceptual model Table structure

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

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

当我使用这种关系更新模型时,我会得到如下图: Problem - Model

我的问题是:

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

1 个答案:

答案 0 :(得分:1)

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