One-to-Many 导航 属性 似乎适用于 Post 但不适用于 get

One-to-Many Navigation Property seems to work for Post but not for get

我是 Entity Framework 的新手,我正在尝试创建一对具有 one-to-many 关系的实体 class。我找到的教程和文章只是告诉您如何设置这两个 classes。我按照他们的指示进行了验证 child objects 确实自动将外键设置为 parent 键的值,这是正确的,并且上下文中的 SaveChanges 有效(或不给一个错误)。但是当我获取时,集合为空。

我想我缺少一些教程和文章认为理所当然需要做的事情。我是否需要做些什么来确保 parent class 中的 ICollection 被填充?

这是 Parent 实体:

public class Character 
{
    [Key]
    public string Id { get; private set; }
    ...

    public virtual ICollection<Fault> Faults { get; set; }
}

这是我的 child:

public class Fault
{
    [Key]
    [DatabaseGenerated( DatabaseGeneratedOption.Identity )]
    public string FaultId { get; set; }
    public string FaultName { get; set; }

    public string CharacterId { get; set; }
    public virtual Character Character { get; set; }
}

在我的上下文中,我添加了:

public DbSet<Character> Characters { get; set; }
public DbSet<Fault> Faults { get; set; }

还有什么需要我做的吗? Post 似乎成功了,但是 Character 的获取并没有给我一个填充的 Faults 集合。我是否必须手动查询故障并构建集合?

如果您说创建有效并且您看到它保存了您的数据文件

然后在查询获取数据时需要包含它

dataSource.Character.Include(x => x.Faults )

看到这个linkhttps://docs.microsoft.com/en-us/dotnet/api/system.data.entity.infrastructure.dbquery-1.include?view=entity-framework-6.2.0