实体框架根导航属性为null,但填充了后代导航属性

时间:2016-12-01 21:02:14

标签: c# entity-framework entity-framework-6

根模型上的导航属性始终返回null,同时定义的同一模型上的辅助关系正确加载。我试图找出原因。

使用EF6 Code First,急切加载,我的模型/导航属性结构如下:

  • ProjectUser
    • 项目(始终为空)
    • 用户(加载正常)
    • 群组(加载正常)
      • 客户
        • 项目(正确填充 - 应始终与ProjectUser.Project相同)

我的 ProjectUser.Project 始终为null,但有趣的是, ProjectUser.Groups.Clients.Project 已正确填充。我的项目映射如下:

HasRequired(pu => pu.Project)
    .WithOptional()
    .Map(m => m.MapKey("ProjectId"));

为了进一步让事情变得混乱,我实际上能够加载项目,如果在上面的映射中我将WithOptional()更改为WithMany()。然而这对我来说没有意义......所以我的问题是:

使用WithOptional时,为什么ProjectUser.Project没有加载?

1 个答案:

答案 0 :(得分:0)

WithMany意味着您的实体可能具有许多导航属性,因为它被称为1对多。

WithOptional表示您的实体可能具有导航属性之一。一对一的关系。

看看这个post