未保存外键的 EF7 值

EF7 value of foreign key not being saved

我使用的是 EF7,我有三个实体:

class A {
    public int Id;
    public B B;
}


class B {
    public int Id;
    public string SomeValue;
    public virtual IEnumerable<C> C;
}

public class C {
    public int Id;
    public string SomeValue;
    public virtual B B;
}

自动生成的migration貌似没问题,从C到B增加了一个外键。 但是,当我执行以下操作时,没有值分配给数据库中的外键:

var a = _dbContext.A.Single(x => x.Id == id);
a.B = new B {
    SomeValue = "SomeValue";
    C = listOfC;
};
_dbContext.SaveChanges();

C 的实际值存储在相应的 table 中,但由于未保存外键,我无法再检索与 B 相关的值。

EF7 是否无法正确执行嵌套插入?有什么办法可以解决这个问题吗?

编辑: 显式声明外键使其不可为空,这意味着插入失败 ("bad foreign key constraint")。

将 B 中的 IEnumerable 更改为 ICollection 可解决问题:

class B {
    public int Id;
    public string SomeValue;
    public virtual ICollection<C> C;
}