【发布时间】:2015-08-07 08:54:45
【问题描述】:
我有一个包含多个表和实体框架 EDMX 模型的数据库。假设我有以下简化结构。
表:人
列:PersonId (PK)
表:父
列:PersonId (PK, FK)
表:儿童
列:PersonId(PK、FK)
列:ParentId (FK)
为简洁起见,我删除了其他列。 PersonId 是所有表中的主键,它是从 Parent 和 Child 表到 Person 表的外键。此外 Child 通过 ParentId 列与 Parent 有外键关系。
我还在 EDMX 中进行了配置,因此 Parent 和 Child 的 BaseType 为 Person。现在,当我在 Visual Studio 中执行“从数据库更新模型...”时,我有一些额外的导航属性。现在,父实体具有子表的子导航属性,这是正确的,因为子表中的 ParentId 外键。然而,父表也有 Persons 导航属性,它是 Person 实体的列表。我猜这是因为 Child 是从 Person 派生的,但我看不出有任何原因,因为我已经拥有 Childs 子类(Child)的属性。
我认为它在前一段时间运行良好,但现在每次使用“从数据库更新模型”时,我都必须手动删除父子节点的冗余关联和导航属性。也许我缺少一些配置,任何帮助将不胜感激。
最近我也将 EF 升级到了版本 6,所以这可能导致了这个问题吗? 这也是数据库优先的方法。
【问题讨论】:
-
我不太了解您的数据库结构。只需 2 张桌子,您就可以更轻松地完成所有这些工作?
-
正如我所说,这是一个简化的结构。我在 Person、Parent 和 Child 表中还有很多其他列。
标签: .net sql-server database entity-framework entity