实体框架数据库优先 - 层次结构表(TPH)递归关系的实现

11
我试图使用Entity Framework 5和基于数据库的方法在一个具体类型上实现TPH递归关系。我有概念模型和如下表结构:

Conceptual modelTable structure

此外,我的数据库表中还有如下递归关系。
ALTER TABLE [dbo].[BaseType]  
WITH CHECK ADD  CONSTRAINT [FK_BaseType_DerivedType] 
FOREIGN KEY([Derived1RecursiveId])
REFERENCES [dbo].[BaseType] ([Id])

当我使用这个关系更新模型时,我得到了如下的图表:

Problem - Model

我的问题是:

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


你是否正确地在基础对象上设置了递归外键,但是你希望实体框架仅在派生类型上使用它? - Olaf
@Olaf 是的,我想在派生类型上使用它 - 在图像上用蓝色圆圈标记。当前情况由红色矩形标记。我在上面的问题中已经解释了 - 文本和图像。为了简化,我希望在模型从数据库更新后,我的第三张图片看起来像第一张(概念模型)。 - Olinad
1个回答

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接